我的问题可能是一种技术,而不是对如何设置控制器和代表的误解。也就是说,也许我应该采取不同的方式......
无论如何,我有一个带有 mainViewController 的情节提要设置。在其中有一个UIButton
,当单击时,它会跳转到一个弹出窗口。弹出框的内容视图控制器是UINavigationController
一个rootViewController
例如MyViewController
.
我正在尝试制作mainViewController
a delegate
ofMyViewController
并且正在 prepareForSegue 中这样做:
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:(@"popSleepSegue")] || [segue.identifier isEqualToString:(@"popAlarmSegue")])
{
UIStoryboardPopoverSegue *popSegue = (UIStoryboardPopoverSegue *)segue;
popSegue.popoverController.delegate = self;
popSegue.popoverController.passthroughViews = [NSArray arrayWithObject:self.view];
if ([segue.identifier isEqualToString:@"popAlarmSegue"])
{
if ([[segue destinationViewController] isKindOfClass:[UINavigationController class]])
{
UINavigationController *uNC = (UINavigationController *)[segue destinationViewController];
MyViewController *aVC = (MyViewController *)uNC.topViewController;
aVC.popController = popSegue.popoverController;
aVC.delegate = self;
}
}
}
}
[self.delegate class]
就像在null
加载NSLog
时一样MyViewController
。而且,自然地,delegate
回调不会在mainViewController
.
本质上,我试图模仿 iPad 上 Apple 日历应用程序的行为。
我正在尝试使用委托按照成语向上游传递数据。诀窍是我试图delegate
通过 a设置UINavigationController
弹出框的内容视图。听起来太复杂了。也许还有另一个成语?
同时,我要试一试 NSNotificationCenter。