iOS : 处理具有多个相同 viewcontroller 的多个 uilocalnotification
iOS : Handle multiple uilocalnotification with multiple same viewcontroller
我正在使用 UILocalnotification...收到通知后我会打开 viewcontroller 当应用程序处于活动模式时...但是如果同时收到多个通知...我该如何打开多个 viewcontroller...彼此叠加并依次关闭它们....我尝试打开 viewcontroller 但收到此错误
Warning: Attempt to present <NotificationViewController: 0x7fc033b43900> on <UINavigationController: 0x7fc031859600> whose view is not in the window hierarchy!
有一个 hack 可以做到这一点。
编写视图控制器的扩展:
extension UIViewController {
var lastPresentedViewController: UIViewController {
guard let presentedViewController = presentedViewController else { return self }
return presentedViewController.lastPresentedViewController()
}
}
或对象:
UIViewController+LastPresentedViewController.h:
@interface UIViewController (LastPresentedViewController)
-(UIViewController *)lastPresentedViewController;
@end
UIViewController+LastPresentedViewController.m:
@implementation UIViewController (LastPresentedViewController)
- (UIViewController *)lastPresentedViewController {
if (self.presentedViewController) {
return [self.presentedViewController lastPresentedViewController];
} else {
return self;
}
}
@end
当您需要从 navigationController 中呈现视图控制器时,只需像这样调用此方法:
navigationController.lastPresentedViewController.presentViewController(....
如果您已经在 navigationController 中,只需调用 lastPresentedViewController.presentViewController(...
我正在使用 UILocalnotification...收到通知后我会打开 viewcontroller 当应用程序处于活动模式时...但是如果同时收到多个通知...我该如何打开多个 viewcontroller...彼此叠加并依次关闭它们....我尝试打开 viewcontroller 但收到此错误
Warning: Attempt to present <NotificationViewController: 0x7fc033b43900> on <UINavigationController: 0x7fc031859600> whose view is not in the window hierarchy!
有一个 hack 可以做到这一点。
编写视图控制器的扩展:
extension UIViewController {
var lastPresentedViewController: UIViewController {
guard let presentedViewController = presentedViewController else { return self }
return presentedViewController.lastPresentedViewController()
}
}
或对象:
UIViewController+LastPresentedViewController.h:
@interface UIViewController (LastPresentedViewController)
-(UIViewController *)lastPresentedViewController;
@end
UIViewController+LastPresentedViewController.m:
@implementation UIViewController (LastPresentedViewController)
- (UIViewController *)lastPresentedViewController {
if (self.presentedViewController) {
return [self.presentedViewController lastPresentedViewController];
} else {
return self;
}
}
@end
当您需要从 navigationController 中呈现视图控制器时,只需像这样调用此方法:
navigationController.lastPresentedViewController.presentViewController(....
如果您已经在 navigationController 中,只需调用 lastPresentedViewController.presentViewController(...