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