混合静态和动态表格视图单元格iOS

时间:2014-10-14 08:17:34

标签: ios objective-c uitableview

我正在尝试使用静态和动态原型单元格创建表格视图。

所以,我想要实现的是这样的:

static
static
static
static
dynamic
...

StackoverflowUITableView Mix of Static and Dynamic Cells?上的这篇文章有点帮助,但它无法解决我的整个问题。

我想要4个静态单元格,但我想在这些单元格中包含控件并将它们作为出口连接,然后在下面添加更多动态单元格。

这可能吗?

提前谢谢。

编辑:我到目前为止采用的方法

  1. 创建仅包含静态单元格的表格视图,然后在原始单元格中添加新的表格视图。但是,这种方法看起来并不专业,而且,当我将数据源和委托添加到新的表视图时,原始表视图向下移动。

  2. 为静态和动态单元格创建两个表格视图,然后将它们包含在一个视图中。这是我认为合理的方式,但因为我是新手开发人员,无法找到如何解决静态表视图应该嵌入到表视图控制器中#34;。

2 个答案:

答案 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以便访问正确的数据。