混合静态和动态表格视图单元格iOS
我试图用静态和动态原型单元创建一个表视图。
所以,我想要实现的是这样的:
static static static static dynamic ...
关于Stackoverflow
, 静态和动态单元格的UITableView组合的这篇文章? ,有点帮助,但它无法涵盖我的整个问题。
我想要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
子类。
我会创建静态单元格作为原型,但每个都给它们一个不同的cellReuseIdentifier。 然后在您的cellForRowAtIndexPath中,使用行的右侧cellReuseIdentifier出列。 对于具有动态数据的行,将索引偏移4以便访问正确的数据。