簡體   English   中英

從父視圖控制器在容器中設置tableViewCell

[英]Setting tableViewCell in a container from a parent view controller

我正在嘗試制作一個非常基本的設置應用,其中用戶在UIViewController上設置5個選項,然后基於所選選項執行功能。 其中三個選項位於包含UITableView的容器中。 當從表格視圖中選擇一個單元格時,將顯示一個新的視圖控制器,其中包含該單元格的選項(即用戶從表格中選擇“金屬”,然后從新的詳細信息視圖控制器中選擇“鋼”)。 選擇一個值后,將使用展開順序顯示UIViewContoller /父視圖,並且“ Metal”行的詳細信息文本應在容器表中顯示“ Steel”

單元格選擇序列可以正常工作,並且NSLog顯示所選選項已正確存儲。 問題是我不知道如何將詳細信息文本標簽設置為新設置的變量。 我需要什么代碼才能通過UIViewController在容器表上設置詳細文本標簽?

一些額外的信息:我的放松是回到兩個視圖控制器。 如果我放松到容器內的表,則segue在行選擇上不起作用。

這是設置選擇中的prepareForSegue代碼(在我的示例中顯示“ Steel”的視圖控制器)

//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);
}

這是我的放松任務的代碼,一旦選擇了詳細信息行,就會執行該代碼:

-(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的值時,它返回一個(空)值,這意味着我有些奇怪在我的展開塊中,或者我沒有正確傳遞selectedMetal變量。

為了解決此問題,我對初始設計進行了一些更改,然后將所有選項都放在表視圖控制器中。 現在我的任務正常運行,並且在控制器之間傳遞數據沒有任何問題。 如果有人可以針對原始問題提出解決方案(將數據從父視圖傳遞到其嵌入式容器視圖),我將很樂意嘗試一下,並在可行的情況下給出答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM