【发布时间】:2013-12-10 16:45:45
【问题描述】:
我正在开发一个 iPad 应用程序,我在其中处理 2 个控制器。我的父控制器(比如控制器 A)有一个单元格,单击该单元格时通过 pushViewController 调用/导航到子控制器(比如控制器 B),如下所示:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
ControllerB *controllerB = [[ControllerB alloc] initWithStyle:UITableViewStyleGrouped];
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered
target:nil action:nil];
[self.navigationItem setBackBarButtonItem:backButton];
[self.navigationController pushViewController:controllerB animated:YES];
}
现在在 ControllerB 中,我处理一个开关,当用户从 ControllerB 来回导航到 ControllerA 然后返回到 ControllerB 时,该开关必须保持其状态,即用户更改 ControllerB 上的开关状态(例如:YES),然后返回到 ControllerA,然后当返回到 ControllerB 时,用户应该看到与导航返回时相同的开关状态。 (即:是)
我正在考虑将开关的状态从 ControllerB 发送回 ControllerA,这样当 ControllerB 再次初始化时,可以发送开关的状态来设置开关的状态。
几个设计问题:
- 在控制器之间建立交叉连接是个好主意吗?即 ControllerA 有一个 ControllerB 的对象,但是为了发回开关状态,我计划在 ControllerA 中创建一个属性来保存开关状态并在控制器 B 中为其分配开关状态值。但为此我必须创建一个ControllerB 中 ControllerA 的对象,可能是交叉连接。
- 将数据从子控制器传递到父控制器的其他最佳方法是什么?
【问题讨论】: