Ios 如何将UITableViewController创建为可重用模块?

Ios 如何将UITableViewController创建为可重用模块?,ios,iphone,objective-c,ipad,uitableview,Ios,Iphone,Objective C,Ipad,Uitableview,我是iOS开发新手。我创建了两个UITableViewController类。一个是任务列表,另一个是注释列表 现在的问题是这两个UITableViewController都需要在多个屏幕上同时在某些屏幕上使用。我不想在每个屏幕上重新编写UITableView委托和数据源的所有代码。我想通过某种继承机制或模块系统重新使用UITableViewController 所以在我需要显示列表的每个UIViewController上,我只需要在nib文件中添加一个UITableView,设置它的自定义类,

我是iOS开发新手。我创建了两个UITableViewController类。一个是任务列表,另一个是注释列表

现在的问题是这两个UITableViewController都需要在多个屏幕上同时在某些屏幕上使用。我不想在每个屏幕上重新编写UITableView委托和数据源的所有代码。我想通过某种继承机制或模块系统重新使用UITableViewController

所以在我需要显示列表的每个UIViewController上,我只需要在nib文件中添加一个UITableView,设置它的自定义类,然后它就应该开始显示数据了

是否可以使用某种继承、组件或模块系统


非常感谢您的帮助。

创建UITableViewController的子类添加所有必需的委托方法并在.h文件中添加:

@property(nonatomic, strong) NSArray *myData;
所有基于该数组设置的方法,例如:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.myData;
}
当您想使用此功能时,只需创建对象并传递数据:

MYTable *tableViewController = [[MYTable alloc] init];
tableViewController.myData = DATA YOU WANT TO DISPLAY;

它可以工作,但您必须将完全相同的数据结构传递给NSArray,以便在cellForRowAtIndexPath:method中正确处理它。

嘿,mate您需要维护两个数组并创建一个切换按钮,例如a/b

如果按a,则获取一个数组的计数;如果按b,则获取其他字典的数组计数。通过维护BOOL变量来实现这一点

前。 布尔校验值

-(UIButton *)a:(id)button
{
     checkvalue = TRUE;
     [tableview reloadData];
}
-(UIButton *)b:(id)button
{
     checkvalue = FALSE;
     [tableview reloadData];
}
现在将该条件放入tableview计数行数和cellforrowatindexpath方法中。 喜欢 //对于numberOfRowsInTableview

if(checkvalue == TRUE)
{
return [arr1 count];
}
else
{
return [arr2 count];
}
同样,CellForRowatineXpath也是如此
谢谢,祝您愉快。

谢谢您的回复,我已经创建了一个单独的UITableViewController,并实现了所有必需的委托和数据源方法。现在我想在多个屏幕上使用这个UITableViewController。任务和笔记是完全不同的东西。你可以忘记它们。问题是如何在多个屏幕上重复使用UITableViewController。谢谢回复。我还是很困惑。我已经创建了TaskViewController,它运行良好。现在我想在我的实际屏幕DashboardViewController中使用它。那么,我应该如何在DashboardViewController中使用TaskViewController?如果我执行TaskViewController*taskVC=[[TaskViewController alloc]init];[taskVC.tableView重载数据];它不起作用。目前,我已经在TaskViewController中硬编码了dataArray。不要硬编码dataArray,使用我在帖子中添加的属性,创建后添加:taskVC.dataArray=要显示的数组。谢谢Greg,数据对我来说没有问题。它已在TaskViewController中设置,您可以假设我需要在所有屏幕中显示硬编码数据。因此,我必须在TaskViewController中创建数据。因此,无需在所有其他屏幕中反复设置。实际上我在考虑MVC模式。我想创建一个视图控制器。我可以在我想要的任何屏幕上使用。就像一个组件或插件。