我在Xcode 4.3中创建了一个新项目“ Empty Application”模板,它只有两个类AppDelegate.h
和.m
我在创建应用程序时使用ARC进行了检查,以使用自动引用计数。
我添加了两个新文件“ RootViewController”和“ NewProjectViewControllers”。
我在AppDelegate
中实现了如下代码来设置导航控制器
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
rootViewController = [[MainViewController alloc] init];
UINavigationController *navigation = [[UINavigationController alloc] initWithRootViewController:rootViewController];
[self.window addSubview:navigation.view];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
并在主视图中(根视图控制器)实现如下
- (void)viewDidLoad
{
[super viewDidLoad];
self.title = @"Projects";
UINavigationBar *navigationBar = [self.navigationController navigationBar];
[navigationBar setTintColor: [UIColor colorWithRed:10/255.0f green:21/255.0f blue:51/255.0f alpha:1.0f]];
//To set the customised bar item
UIButton *rightBarBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[rightBarBtn setBackgroundImage:[UIImage imageNamed:@"plus_new.png"] forState:UIControlStateNormal];
rightBarBtn.frame=CGRectMake(0.0, 100.0, 30.0, 30.0);
[rightBarBtn addTarget:self action:@selector(addProject) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem* rightBarItem = [[UIBarButtonItem alloc] initWithCustomView:rightBarBtn];
self.navigationItem.rightBarButtonItem = rightBarItem;
// Do any additional setup after loading the view from its nib.
}
- (void) addProject
{
NewProjViewController *editProject = [[NewProjViewController alloc] init];
[self.navigationController pushViewController:editProject animated:YES];
NSLog(@"xxxxxxxxxxxxxxx");
}
但是,由于我使用了
ARC
,导航可能会立即脱发,并且无法正常工作,方法中的所有操作都可以正常工作,只是推送到下一个视图如果我用ARC做同样的事情,那就可以了
如何解决这个问题..?提前致谢
最佳答案
在appdelegate
appdidfinishlaunching
方法中,您尚未设置self.window.rootviewcontroller
到navigationController
。实际上,您没有将任何rootViewController
设置为Window
。这就是为什么不显示它。在开始在屏幕上查看ViewController
之前,请进行设置。UIWindow rootViewController
属性是iOS4的新增功能。
较老的技术是使用addSubview
。
推荐的新技术是设置rootViewController
。
关于iphone - UINavigationController在iPhone中的ARC下不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13945746/