【发布时间】:2015-10-27 12:52:58
【问题描述】:
我在 viewDidLoad 中的第一个视图有以下代码
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Dialpad" bundle:nil];
self.vc = [sb instantiateViewControllerWithIdentifier:@"DialpadBoard"];
self.vc.delegate = self;
头文件包含视图控制器的定义
@property (nonatomic, retain) DialpadTableViewController *vc;
在捕捉到一个事件后,视图会加载一个新的模态视图
- (void)handleEvent:(UIGestureRecognizer*)recognizer {
[self presentViewController:self.vc animated:YES completion:NULL];
}
视图还包含关闭模式视图的方法:
- (void) dialpadControllerDidCancel:(SearchDialpadTableViewController *)controller {
[self dismissViewControllerAnimated:YES completion:nil];
}
最后一个方法永远不会被调用。
问题是加载时的模态视图没有 self.delegate。新的模态视图从情节提要加载,如下所示。为什么代表是零?由于视图位于另一个故事板中,所以我无法进行转场。
【问题讨论】:
-
你在第一个视图控制器中实现了“dismiss”方法吗?
-
是的,它被实现了,但是它永远不会被调用,因为第二个视图控制器有 self.delegate nil。
-
如果你只是实现这个方法来关闭第二个视图,你可以选择更简单的方法,在第二个视图中插入 uibutton 并作为关闭按钮
-
但是如果你想在某些事件之后关闭第二个视图,你需要在第二个视图中定义一个委托协议来调用你的方法
-
我已经做到了。我的问题是第二个视图没有第一个视图的地址(self.delegate 为 nil),这是我的主要问题
标签: ios iphone delegates modalviewcontroller presentmodalviewcontroller