2
我不知道我在這裏失蹤。我有一個自定義UINavigationController
,我正在嘗試添加一個持久UIBarButtonItem
到酒吧。添加UIBarButtonItem到UINav..Controller
-(void)viewDidLoad { self.navigationBar.barStyle = UIBarStyleBlack; UIBarButtonItem *bbi = [[UIBarButtonItem alloc] initWithTitle:@"Nope..." style:UIBarButtonItemStyleBordered target:self action:@selector(goBack:)]; self.navigationItem.leftBarButtonItem =bbi; [bbi release]; } -(void)goBack:(id)sender { NSLog(@"go back now"); }
我在這裏錯過了什麼? - 順便說一句,我不想/不會使用IB。
UPDATE: 目前,這是最接近我能得到:
-(void)viewDidLoad { self.navigationBar.barStyle = UIBarStyleBlack; UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 20, 320, 44)]; navBar.barStyle = UIBarStyleBlack; UINavigationItem *navItem = [[UINavigationItem alloc] initWithTitle:@"Currently Playing..."]; [navBar pushNavigationItem:navItem animated:NO]; UIBarButtonItem *editButton = [[UIBarButtonItem alloc] initWithTitle:@"Close" style:UIBarButtonItemStyleBordered target:self action:@selector(goBack:)]; navItem.rightBarButtonItem = editButton; [self.view addSubview:navBar]; [editButton release]; [navItem release]; [navBar release]; [super viewDidLoad]; }
這太可怕了,我有一個導航欄全部添加到已經有一個導航欄一UINavigationController
....如果我嘗試使用現有,我得到這個錯誤:
'NSInternalInconsistencyException', reason: 'Cannot call pushNavigationItem:animated: directly on a UINavigationBar managed by a controller.'
....真的嗎?
那麼會發生什麼?你看到你的UINavigationController,但它沒有自定義欄按鈕?你有沒有在上述方法中打破,它確實被調用?你跨過了它,非對象引用是否爲零?您逐步調用了調用此方法的方法,並且您可以看到導航欄已正確安裝? – stefanB 2010-03-26 03:11:11
調試器顯示確實存在,但實際的顯示沒有任何內容。正如所宣稱的那樣,酒吧是黑色的。 – mlecho 2010-03-26 03:29:59
將您的頂級代碼放入您的根視圖控制器中,而不是放在您的UINavigationController中。另外,在第二種情況下出現錯誤的原因是您不會像這樣推導向欄。當您使用導航控制器時,您將新的視圖控制器推到導航控制器堆棧上。這些新的視圖控制器隨後根據需要自定義其導航項目。 – 2010-03-26 04:25:34