KsK*_*KsK 20 iphone objective-c uinavigationcontroller ios ios6
在编译我得到的代码时
"对开始/结束外观转换的不平衡调用
<UINavigationController: 0xa98e050>"
警告.
这是我的代码
KVPasscodeViewController *passcodeController = [[KVPasscodeViewController alloc] init];
passcodeController.delegate = self;
UINavigationController *passcodeNavigationController = [[UINavigationController alloc] initWithRootViewController:passcodeController];
[(UIViewController *)self.delegate presentModalViewController:passcodeNavigationController animated:YES];
Run Code Online (Sandbox Code Playgroud)
小智 59
我知道这是一个古老的问题,但是为了那些再次遇到这个问题的人,这就是我所发现的.
首先,问题并没有说明新的viewController被调用的地方.
我怀疑这是从-(void)viewDidLoad
移动相应的代码,-(void)viewDidAppear:问题就会消失.
这是因为at -viewDidLoad,视图已加载,但尚未显示,动画和视图尚未完成.
如果您的目的是推动窗口,请在窗口显示并绘制后执行.
如果您发现自己使用计时器来控制系统行为,请问问自己您做错了什么,或者如何更好地做到这一点.
iPa*_*tel 18
我发现如果您在上一个事务(动画)正在进行时尝试推送新的视图控制器,则会出现此问题.
无论如何,我认为,这是presentModalViewController问题,设置animated:NO,可能会解决您的问题
[(UIViewController *)self.delegate presentModalViewController:passcodeNavigationController animated:NO];
Run Code Online (Sandbox Code Playgroud)
其他选择是:
采取NSTimer并调用上述代码之间可以是0.50至1秒.这也是有用的技巧.所以你以前的viewController已经完成了它的动画.
当您尝试在先前包含的viewController完成动画之前加载新的viewController时,会出现此警告.如果您打算这样做,只需将代码添加到dispatch_async(dispatch_get_main_queue()块中:
dispatch_async(dispatch_get_main_queue(), ^(void){
[(UIViewController *)self.delegate presentModalViewController:passcodeNavigationController animated:YES];
});
Run Code Online (Sandbox Code Playgroud)
并且警告将消失.
| 归档时间: |
|
| 查看次数: |
28139 次 |
| 最近记录: |