ユーザーが UIViewController で 5 つのオプションを設定し、選択したオプションに基づいて機能を実行する非常に基本的な設定アプリを作成しようとしています。オプションのうち 3 つは、UITableView を含むコンテナにあります。テーブル ビューからセルを選択すると、そのセルのオプションを含む新しいビュー コントローラーが表示されます (つまり、ユーザーがテーブルから "Metal" を選択し、次に新しい詳細ビュー コントローラーから "Steel" を選択します)。値が選択されると、アンワインド セグエを使用して UIViewContoller/親ビューが表示され、「Metal」行の詳細テキストはコンテナ テーブルに「Steel」と表示されます。
セル選択セグエは適切に機能し、NSLog は選択されたオプションが正しく保存されていることを示しています。問題は、詳細テキスト ラベルを新しく設定された変数に設定する方法がわからないことです。UIViewController からコンテナ テーブルに詳細テキスト ラベルを設定するには、どのコードが必要ですか?
少し追加情報: 私のアンワインド セグエは 2 つのビュー コントローラーに戻ります。コンテナ内のテーブルに巻き戻すと、行選択でセグエが機能しません。
これは、設定選択からの 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 の値を手動で設定できますが、optionTable.detailTextLabel.text の値を NSLog しようとすると、(null) 値が返されます。アンワインド ブロックで、または selectedMetal 変数を正しく渡していません。