具有动态内容和动态行高的UITableViewCell

时间:2014-10-08 13:30:41

标签: ios objective-c uitableview

我有一个类似于下面的表格视图。 每个问题都可以包含动态的答案,因此可以更改单元格高度。我需要尽量避免编写手动编码(以编程方式创建按钮和标签并添加到Tableview contentView)并且更喜欢使用XIB& #39; s并从界面构建器执行所有操作。什么是最好的方法呢?

enter image description here

2 个答案:

答案 0 :(得分:0)

对我而言,最简单的解决方案是将每个编号的项目分配给一个部分,并将每个选项集合实现为行。这样做不需要行的动态高度,但根据您的内容和所需外观可能需要部分。无论哪种方式,结果都是实现您正在寻找的内容所需的大量工作。

您可以在IB中设计每个单元格,如下所示: enter image description here

将其注册到表格视图:

[self.tableView registerNib:[UINib nibWithNibName:@"YourSubclass" bundle:nil] forCellReuseIdentifier:@"cell"];

按照@ GoodSp33d的指示实施UITableViewDataSourceUITableViewDelegate方法。需要这些方法来告诉表视图有关动态内容的信息。单凭IB就无法做到这一点。

答案 1 :(得分:0)

如果您想避免编程创建按钮和标签。您可以将表视图设计为:

-Section 1 header view - Question 1 Title
-- Row 1 - Option 1
-- Row 2 - Option 2
-- Row 3 - Option 3 
-Section 2  header view - Question 2 Title
-- Row 1 - Option 1
-- Row 2 - Option 2
-- Row 3 - Option 3

......等等

您还需要为此结构创建合适的模型。字典数组可以完成这项工作。

NSArray *data = @[
@{@"Question_Title":@"Do you feel lucky punk ?",
  @"Options":@[@"yes", @"no"]},
]

在TableView的DataSource

-numberOfSectionsInTableView
 return data.count

-numberOfRowsInSection
 NSDictionary *options = data.section
 NSArray *optionsArray = options[@"Options"];
 return optionsArray.count;