0

抱歉,如果这似乎是一个简单的问题,但每次我在谷歌上搜索这个主题时,我只能找到如何将数据从子视图传递到父视图,反之亦然。

基本上,我展示的是一个模态视图,它位于它自己的 UINavigation 控制器中。模态视图需要知道是否允许用户“编辑”它 - 所以我认为最简单的方法是将子视图(isEdit)上的 BOOL 设置为 TRUE (这会得到根据发生的 segue 设置)但是因为这个模式视图是从 UINavigation 控制器呈现的 - 我无法从 -(void)prepareForSegue 函数访问它并直接设置 BOOL。我已经尝试对 UINav 控制器进行子类化,并在其中包含一个可以设置的 BOOL,然后在子视图中重新检查,但我似乎无法从子视图访问控制器 - 我会包含我的代码,但我确定必须有更简单的方法来完成这项任务!

有没有人能够建议一种更经济的方式将这个布尔值“通过” UINavigationController 传递给子视图?

谢谢

4

2 回答 2

5

如果您的 segue 调用导航控制器,您可以从 设置根视图控制器的属性-prepareForSegue,如下所示

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"MySegueId"]) {
        UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
        MyViewController *childController = (MyViewController *)navController.childViewControllers.lastObject;
        childController.isEditable = YES;
    }
}
于 2013-02-07T01:35:57.407 回答
0

当您分配/初始化模态视图控制器时,只需设置属性(假设您的模态视图控制器称为 ProfileVC):

ProfileVC *vc = [[ProfileVC alloc] init];
vc.isEdit = YES;
[vc.navigationController presentModalViewController:vc animated:YES];

只需确保在 ProfileVC.h 中有一个名为 isEdit 的属性:

@interface ProfileVC : UIViewController
@property (nonatomic) BOOL isEdit;
@end
于 2013-02-07T01:34:54.690 回答