2014-10-08 103 views
-1

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

enter image description here

+0

IB是最适合于静态内容。正如你所指出的,每个问题都有一个动态的答案。如果您使用表格单元格来表示答案,则不需要每个单元格的动态高度(基于上图)。您仍然可以使用IB来设计一个'UITableViewCell'子类和将容纳该表的视图控制器,但是无法避免为'UITableViewDataSource'和'UITableViewDelegate'协议编写代码。 – dbart 2014-10-08 14:01:50

回答

0

对我听起来像最简单的解决办法是每个编号项分配部分和实现的选项行,每行集合。这样做并不需要行的动态高度,尽管根据您的内容和期望的外观可能需要这些高度。无论哪种方式,结果都是实现你所需要的一小部分工作。

你可以设计每个单元在IB像这样: enter image description here

与表视图注册吧:

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

贯彻UITableViewDataSourceUITableViewDelegate方法,如@ GoodSp33d指出。这些方法需要告诉表格视图关于你的动态内容。单凭IB无法做到这一点。

+0

完全正确,因为我看到它,但太短,以帮助OP,因为这是什么GoodSp33d详细,并没有任何飞行 – 2014-10-08 13:53:43

+1

我已经添加了几个更多的细节来澄清 – dbart 2014-10-08 14:11:52

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; 
+0

没有答案是完全动态的。所以IB设计它是不可行的。 – 2014-10-08 13:42:22

+0

+ ::这不会在IB提出静态布局......为什么这么认为? – 2014-10-08 13:50:42