我想做一個非常基本的設置應用程序,其中用戶在UIViewController上設置5個選項,然後根據選定的選項執行功能。其中3個選項位於包含UITableView的容器中。當選擇來自表格視圖的單元時,將顯示具有該單元的選項的新視圖控制器(即,用戶從表格中選擇「金屬」,然後從新的詳細視圖控制器中選擇「鋼材」)。當選擇一個值時,UIViewContoller /父視圖使用展開順序顯示,「金屬」行的詳細文本應在容器表中顯示「鋼」從父視圖控制器設置容器中的tableViewCell
單元格選擇segue適當地工作,NSLog顯示選擇的選項被正確存儲。問題是,我無法弄清楚如何將詳細文本標籤設置爲新設置的變量。我需要什麼代碼來設置UIViewController容器表上的詳細文本標籤?
有一點額外的信息:我的unwind segue回去兩個視圖控制器。如果我放鬆到容器內的表格,那麼segue在選擇行時不起作用。
下面是從設置的選擇(視圖控制器,顯示從我的例子「鋼」)
//Sets selected metal on row selection
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender: (UITableViewCell *)sender {
NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow];
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:selectedIndexPath];
self.selectedMetal = cell.textlabel.text;
NSLog (@"%@", self.selectedMetal);
}
這是我的展開賽格瑞的代碼,並執行一次被選擇的細節行prepareForSegue代碼:
-(IBAction) unwindToParentView:(UIStoryBoardSegue *)segue{
MetalTableViewController *child = (MetalTableViewController *) segue.sourceViewController;
//Trying to reference the container table here
OptionTableViewController *optionTable = [[OptionTableViewController alloc] initWithNibName:@"OptionTableViewController bundle:nil];
//Have a table view cell in the .h set as an IBOutlet that I'm trying to set here
optionTable.cell1.detailTextLabel.text = child.selectedMetal;
更新
這個問題肯定有事情做與我創建OptionTableViewController的新實例。我可以在其viewDidLoad方法中爲我的容器表視圖控制器手動設置detailTextLabel的值,但是當我嘗試NSLog的optionTable.detailTextLabel.text值時,它會返回一個(null)值,這意味着我有一些無用的東西在我放鬆塊或我沒有正確傳遞selectedMetal變量。
你爲什麼要使用detailTextLabel兩次? optionTable.cell1.detailTextLabel.detailTextLabel.text = child.selectedMetal; –
錯字。我會編輯它。謝謝 – Joey
你不是'引用'容器的表視圖,'OptionTableViewController * optionTable = [[OptionTableViewController alloc] initWithNibName:@「OptionTableViewController bundle:nil];',你正在創建一個新的實例。 – rdelmar