2014-10-08 101 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