如果我们想要在同一个表视图控制器 ios 中使用静态单元格以及动态单元格,那么在 ios 中怎么可能呢?
Posted
技术标签:
【中文标题】如果我们想要在同一个表视图控制器 ios 中使用静态单元格以及动态单元格,那么在 ios 中怎么可能呢?【英文标题】:If we want static cell as well dynamic cells in same table view controller ios, how it can be possible in ios? 【发布时间】:2015-05-04 09:58:59 【问题描述】:我有一个 tableViewController,在它下面我想要一个静态单元格,其余的将是动态单元格。我已经跑了动态单元格,但是在同一个tableViewController中我还需要添加一个静态单元格,我该如何实现呢?
请帮忙
提前致谢。
【问题讨论】:
据我所知这是不可能的。您必须在 cellforrowatindexpath 中处理该“行为”。 顺便说一句...在这种情况下,您所说的静态究竟是什么意思? 静态单元格的意思是,无论表格视图中是否有动态单元格,表格视图中都会有一个单元格 【参考方案1】:您可以执行以下操作:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
return self.dynamicContent.count + 1; // +1 for the static cell at the beginning
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
if (indexPath.row == 0)
// static cell
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"StaticCellIdentifier" forIndexPath:indexPath];
// customization
return cell;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"DynamicCellIdentifier" forIndexPath:indexPath];
id contentObject = self.dynamicContent[indexPath.row];
// customization
return cell;
【讨论】:
【参考方案2】:您不能在 UITableViewController 中同时创建静态和动态单元格。 但是您可以硬编码静态单元格的数据并在每次重新加载表格视图时加载数据。
【讨论】:
【参考方案3】:您可以将所有单元格放在一个部分中并继续检查index path.row == 0
或为它们创建单独的部分。
typedef NS_ENUM(NSUInteger, TableViewSectionType)
TableViewSectionType_Static,
TableViewSectionType_Dynamic
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
return 2; // One for static cell, and another for dynamic cells
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section
switch(section)
case TableViewSectionType_Static:
return 1; // Always return '1' to show the static cell at all times.
case TableViewSectionType_Dynamic:
return [myDynamicData count];
使用这种方法,您的单元格将分为两个部分,并且更易于管理。并且它将始终显示一个单元格,因为 TableViewSectionType_Static
返回的行数始终为 1。它将根据您的数据计数显示动态单元格。
【讨论】:
以上是关于如果我们想要在同一个表视图控制器 ios 中使用静态单元格以及动态单元格,那么在 ios 中怎么可能呢?的主要内容,如果未能解决你的问题,请参考以下文章