Vin*_*der 31 xcode objective-c uiviewcontroller ios
在我的一个应用程序中,我从该application didReceiveLocalNotification方法调用viewController .页面加载成功,但它显示一条警告:
Warning: Attempt to present <blankPageViewController: 0x1fda5190> on
<ViewController: 0x1fd85330> whose view is not in the window hierarchy!
Run Code Online (Sandbox Code Playgroud)
我的代码如下:
-(void) application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
blankPageViewController *myView = [[blankPageViewController alloc]
initWithNibName:@"blankPageViewController" bundle: nil];
myView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self.viewController presentViewController:myView animated:NO completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
Vin*_*der 21
最后,我用以下代码解决了这个问题.
-(void) application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.blankviewController = [[blankPageViewController alloc] initWithNibName:@"blankPageViewController" bundle:nil];
self.window.rootViewController = self.blankviewController;
[self.window makeKeyAndVisible];
}
Run Code Online (Sandbox Code Playgroud)
has*_*ier 15
放
[self.viewController presentViewController:myView animated:NO completion:nil];
Run Code Online (Sandbox Code Playgroud)
进入一个功能,例如
- (void)yourNewFunction
{
[self.viewController presentViewController:myView animated:NO completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
然后像这样调用它:
[self performSelector:@selector(yourNewFunction) withObject:nil afterDelay:0.0];
Run Code Online (Sandbox Code Playgroud)
这里描述的performSelector:withObject:afterDelay问题是什么,这为什么解决了这个问题?因为在下一次运行循环运行之前不会调用选择器.所以事情有时间安定下来,你将跳过一个运行循环.
βha*_*avḯ 14
根据我的假设,我感觉你正试图myView从self.viewController之前出现self.viewController附加或放置在窗口层次结构中.因此,请确保myView在self.viewController出现/附加到窗口后显示.
为什么模态视图控制器不能在viewDidLoad中显示另一个?
| 归档时间: |
|
| 查看次数: |
48699 次 |
| 最近记录: |