所以我使用NavigationController来完成iOS App的所有导航。在主屏幕上有一个加号按钮'拍摄图像,按下此按钮,NavigationController会按下“CameraViewController”按钮。使用方法' displayCamera:'。在那里,用户可以拍摄图像,并且应该由另一个UIViewController预览,该UIViewController由函数“picTaken:'”推动。但是超时我尝试推动这个视图控制器我得到了错误"应用程序尝试在目标上推送一个nil视图控制器"。我不知道出了什么问题。下面是NavigationController.h和相应的.m文件
NavigationController.h
#import <UIKit/UIKit.h>
#import "CameraViewController.h"
#import "MainViewController.h"
#import "PictureCheckViewController.h"
@interface NavigationController : UINavigationController {
CameraViewController *camView;
MainViewController *mainView;
PictureCheckViewController *checkView;
}
- (void)displayCamera:(id)sender;
- (void)picTaken:(id)sender;
@end
NavigationController.m
#import "NavigationController.h"
@interface NavigationController () {
}
@end
@implementation NavigationController
- (void)viewDidLoad
{
[super viewDidLoad];
camView = [[CameraViewController alloc] init];
mainView = [[MainViewController alloc] init];
checkView = [[PictureCheckViewController alloc] init];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)displayCamera:(id)sender {
[self pushViewController:camView animated:YES];
}
- (void)picTaken:(id)sender {
[self pushViewController:checkView animated:YES];
}
@end
如果您需要更多信息,请告诉我。
感谢您的时间和帮助:)。
答案 0 :(得分:0)
我建议你使用惰性实例化方法。 添加一个属性:
@Property(nonatomic,strong) MainViewController *mainView;
@Property(nonatomic,strong) PictureCheckViewController *checkView;
并自己覆盖吸气剂:
-(MainViewController*) mainView {
if(!_mainView) {
_mainView = [[MainViewController alloc] init];
}
return _mainView;
}
和checkView一样明智。
-(PictureCheckViewController*) checkView {
if(!_checkView) {
_checkView = [[PictureCheckViewController alloc] init];
}
return _checkView;
}
然后使用:
进行访问self.checkView
self.mainView
除了我相信修复你的问题之外,它还会避免创建,除非实际使用了资源。