我有一个 splitview 控制器,我想在详细视图中管理多个表(使用这个可可控件,每个部分一个表)。我应该使用 4 个特定的视图控制器还是只使用一个控制子视图的控制器?
2 回答
根据文档:
一个 UITableView 对象必须有一个充当数据源的对象和一个充当委托的对象;通常,这些对象要么是应用程序委托,要么是更常见的自定义 UITableViewController 对象。数据源必须采用 UITableViewDataSource 协议,委托必须采用 UITableViewDelegate 协议。数据源提供 UITableView 构建表所需的信息,并在插入、删除或重新排序表的行时管理数据模型。委托提供表格使用的单元格并执行其他任务,例如管理附件视图和选择。
我建议使用四个不同的 UIViewController, 与单个 UIViewController 中的所有内容相比,它们将模块化您的代码并且易于管理。
您可以在单个基本视图中使用表视图的数量,但您需要使用一些标签来处理它……比如标签值(任何整数值)或按名称。我认为您需要使用标签进行管理,这将如下所示:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
if (tableView.tag == ) { 返回值; }
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (tableView.tag == ) { 返回值; }
}
(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if (tableView.tag == ) { <#statements#> } 静态 NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// 配置单元格...
返回单元格;}
但在这种情况下,您需要温和地处理整个情况。并且始终关心不要在 cellForRowAtIndexPath 中编写大型语句,另一个明智的做法是在加载时初始化该单元格需要很多时间。