Xcode 4.3 で新しいプロジェクト「Empty Application」テンプレートを作成しました。2 つのクラスAppDelegate.h
と .mしかありません。
アプリの作成中に自動参照カウントを使用するようにARCに確認しました。
「RootViewController」と「NewProjectViewControllers」という2 つの新しいファイルを追加しました。
次のようにナビゲーションコントローラーを設定するコードを実装しました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なしで同じことをするとうまくいきます
この問題を解決する方法..? 前もって感謝します