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

时间:2013-12-11 12:24:37

标签: ios iphone objective-c ipad uitableview

我是iOS开发的新手。我创建了两个UITableViewController类。一个是Tasks的列表,第二个是Notes的列表。

现在问题是在许多屏幕上都需要这些UITableViewController(在某些屏幕上同时存在)。我不想在每个屏幕上重写UITableView delegates and datasource的所有代码。我想重用UITableViewController和一些继承机制或模块系统。

因此,在我需要显示列表的每个UIViewController上,我只需要在nib文件中添加UITableView,设置其自定义类,它应该开始显示数据。

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

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

创建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:方法中正确处理它。

答案 1 :(得分:-1)

嘿伙伴你需要维护两个数组并创建一个切换按钮ex。的a / b

如果a按下则获取一个数组的计数,如果按b则计算其他字典的数组。并通过维护BOOL变量来做到这一点。

离。 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];
}

和cellForRowAtIndexPath类似 谢谢你,祝你有个愉快的一天。