iOS组件可重用性:视图和视图控制器

iOS组件可重用性:视图和视图控制器,ios,objective-c,cocoa-touch,Ios,Objective C,Cocoa Touch,非常基本的问题,我似乎找不到一个直接的答案 所以这里的交易是:我有一个UI,我想在几个接口中重用它。特别是,它应该作为子视图包含在作为导航堆栈一部分的父视图中,但也可以作为独立的模式视图使用。所讨论的子视图只是一个定制的UITableView,其数据绑定方法由子控制器实现 子视图应该绑定到它从中获取所有数据的特定模型对象。换句话说,它的控制器基于该目标模型对象为UITableViewDataSource实现必要的数据绑定方法 显然,我需要创建一个控制器来表示这个可嵌入的子视图,因为这些数据绑定方

非常基本的问题,我似乎找不到一个直接的答案

所以这里的交易是:我有一个UI,我想在几个接口中重用它。特别是,它应该作为子视图包含在作为导航堆栈一部分的父视图中,但也可以作为独立的模式视图使用。所讨论的子视图只是一个定制的UITableView,其数据绑定方法由子控制器实现

子视图应该绑定到它从中获取所有数据的特定模型对象。换句话说,它的控制器基于该目标模型对象为UITableViewDataSource实现必要的数据绑定方法

显然,我需要创建一个控制器来表示这个可嵌入的子视图,因为这些数据绑定方法的实现在所有实例中都是相同的,但似乎在iOS 5之前(我目前需要支持iOS 4+)强烈建议不要在其他视图控制器中嵌入视图控制器


这与苹果在Cocoa中采用的MVC模式完全背道而驰(我仍然不相信他们实现的是MVC)。如果不允许我嵌入子视图控制器,我该如何在不同的父接口中重用子视图控制器的数据绑定/模型逻辑?

您可以创建一个控制器类(只是一个常规的
NSObject
子类),而不是使用视图控制器来提供数据并为每个需要嵌入子视图的视图控制器实例化它


编辑:所以你会做一些类似于
[[MyController alloc]initWithTableView:tableView]

…谁创建了tableView?哦,我明白了,我只需要将tableView添加到我需要的每个父接口,然后使用这个自定义控制器类的实例将其“绑定”到我的数据源。好的,那可能行。或者您可以在
MyController
上有一个
tableView
属性……您可以在视图控制器的初始化器方法中实例化一个MyController对象,并将其存储在一个实例变量中。然后在
viewDidLoad
中,您可以使用全新的
UITableView
对象设置
tableView
属性。