我正在尝试使用静态和动态原型单元格创建表格视图。
所以,我想要实现的是这样的:
static
static
static
static
dynamic
...
Stackoverflow
,UITableView Mix of Static and Dynamic Cells?上的这篇文章有点帮助,但它无法解决我的整个问题。
我想要4个静态单元格,但我想在这些单元格中包含控件并将它们作为出口连接,然后在下面添加更多动态单元格。
这可能吗?
提前谢谢。
编辑:我到目前为止采用的方法
创建仅包含静态单元格的表格视图,然后在原始单元格中添加新的表格视图。但是,这种方法看起来并不专业,而且,当我将数据源和委托添加到新的表视图时,原始表视图向下移动。
为静态和动态单元格创建两个表格视图,然后将它们包含在一个视图中。这是我认为合理的方式,但因为我是新手开发人员,无法找到如何解决静态表视图应该嵌入到表视图控制器中#34;。
答案 0 :(得分:4)
您可以继承UITableViewController
并覆盖dataSource和委托方法以实现此目的。
关键是将呼叫转发到需要静态内容的super
,并在需要动态内容时自行处理。
例如,使用IB以正常方式定义带有静态内容的UITableViewController
,然后按如下方式子类化,以添加带动态内容的单个额外部分:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return [super numberOfSectionsInTableView:tableView] + 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if(section < [super numberOfSectionsInTableView:tableView]) {
return [super tableView: tableView numberOfRowsInSection:section];
}
else {
return self.numberOfRowsInMyDynamicSection;
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexPath.section < [super numberOfSectionsInTableView:tableView]) {
return [super tableVIew: tableView cellForRowAtIndexPath: indexPath];
}
else {
// do your own dynamic cell management;
}
}
//etc. for the other dataSource and delegate methods
我已经使用这种技术创建了一个UITableViewController
子类,允许您在运行时显示/隐藏静态定义的单元格。
实现所有dateSource / delegate方法需要花费一些精力,但最终会得到一个非常方便的UITableViewController
子类。
答案 1 :(得分:1)
我会将静态单元格创建为原型,但为每个单元格赋予不同的cellReuseIdentifier。然后在您的cellForRowAtIndexPath中,使用行的右侧cellReuseIdentifier出列。对于具有动态数据的行,将索引偏移4以便访问正确的数据。