我正在尝试制作一个非常基本的设置应用程序,用户在 UIViewController 上设置 5 个选项,然后根据所选选项执行一个功能。其中 3 个选项位于包含 UITableView 的容器中。When a cell from the table view is selected, a new view controller is shown with options for that cell (ie user selects "Metal" from the table, and then "Steel" from a new detail view controller). 选择值后,使用Undind segue显示了UiviewContoller/parent视图,“金属”行的详细文本应在容器表中显示“钢”
单元格选择 segue 工作正常,并且 NSLog 显示所选选项被正确存储。问题是我不知道如何将详细文本标签设置为新设置的变量。我需要什么代码从 UIViewController 在容器表上设置详细文本标签?
一些额外的信息:我的 unwind segue 回到两个视图控制器。如果我展开到容器内的表格,则 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);
}
这是我的 unwind segue 的代码,一旦选择了详细信息行就会执行:
-(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 变量。