3

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なしで同じことをするとうまくいきます

この問題を解決する方法..? 前もって感謝します

4

2 に答える 2

1

あなたのappdelegate appdidfinishlaunching方法では、設定していません

self.window.rootviewcontrollernavigationControllerrootViewController実際には、何も設定していませんWindow。表示されないのはそのためです。ViewController画面に表示される前に設定してください。


このUIWindow rootViewControllerプロパティはiOS4で新しくなりました。

古い手法は、 を使用することでしたaddSubview

新しく推奨される手法は、 setrootViewControllerです。

于 2012-12-19T05:00:57.430 に答える
0

これを試して:

NewProjViewController *editProject = [[NewProjViewController alloc]initWithNibName:@"NewProjViewController" bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:editProject animated:YES];
    [editProject release];
于 2012-12-19T05:02:46.967 に答える