【问题标题】:Using non-modalview delegation for iPhone为 iPhone 使用非模态视图委托
【发布时间】:2010-08-16 15:08:42
【问题描述】:

好的,我了解如何在模态视图中使用委派向 parentviewcontroller 发送消息,但是如果我想对没有父子关系的 2 个视图执行此操作怎么办?

我有一个导航控制器,它翻转模态视图,然后该模态视图推送一个新的视图控制器。我如何让推送的视图控制器与导航控制器对话。我一直在使用的模态视图代码将其放在父级中:

-(IBAction)pressedUnitAddy {
UnitAddyView *unitVC = [[UnitAddyView alloc] init];

unitVC.delegate = self;

UINavigationController*  theNavController = [[UINavigationController alloc]initWithRootViewController:unitVC];

theNavController.modalTransitionStyle = UIModalTransitionStylePartialCurl;
[self presentModalViewController:theNavController animated:YES];

[unitVC release];
[theNavController release];

}

-(void)didDismissUnitAddyView { [自我dismissModalViewControllerAnimated:是]; }

....然后我从 UnitAddyView 调用 didDismissUnitAddyView。现在,我不想用我正在尝试做的事情来消除任何视图,但我确实希望推送的视图控制器能够与导航控制器对话。我该怎么做?

【问题讨论】:

    标签: iphone delegates


    【解决方案1】:

    视图控制器有一个属性navigationController,如果它们没有被推送到导航控制器上,则该属性为 nil,如果它们被推送到导航控制器,则为指向导航的指针。这能回答你的问题吗?

    【讨论】:

    • 我正在谈论的视图控制器正在被推送到模态视图上。如何使视图控制器的 nil navigationController 指向应用程序中的其他导航控制器。 (不是推动它的模态视图。)
    • navigationController 是一个仅用于指向您所在堆栈的导航控制器的属性,因此您不能这样做。但是,您可以向视图控制器添加另一个 UINavigationController* 属性,并在创建视图控制器时设置该属性。你到底想在这里做什么?很难知道这些建议是否有用。需要了解未连接的导航控制器是不寻常的,这表明您正在做一些奇怪的事情。
    【解决方案2】:

    我所做的只是在导航控制器屏幕上重新加载数据。我们没有直接连接的 UIViewController 和导航控制器 - 它们通过 modalview 分开。我所做的一切,我早该想到的,就是将模态视图的委托设置为导航控制器,并在模态视图关闭时调用一个方法来重新加载导航控制器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-04
      • 2015-08-04
      • 1970-01-01
      • 2013-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多