0
- (void)viewDidLoad
{
    [super viewDidLoad];

    ac = [[AddContacts alloc]init];
    self.navigationController = [[UINavigationController alloc] initWithRootViewController:ac];
    [self.view addSubview:navigationController.view];

    UIBarButtonItem *anotherButton = [[UIBarButtonItem alloc] initWithTitle:@"Show" style:UIBarButtonItemStylePlain target:self action:@selector(refreshPropertyList:)];          
    self.navigationController.navigationItem.rightBarButtonItem = anotherButton;
}

为什么我的按钮没有添加到导航控制器上?

4

2 回答 2

1

UIBarButtonItems 不是由导航控制器控制的,而是由它包含的每个视图控制器控制的——每个控制器都可以UIViewController有不同的按钮。尝试:

ac = [[AddContacts alloc]init];
UIBarButtonItem *anotherButton = [[UIBarButtonItem alloc] initWithTitle:@"Show" style:UIBarButtonItemStylePlain target:self action:@selector(refreshPropertyList:)];          
ac.navigationItem.rightBarButtonItem = anotherButton;

UINavigationController然后像你一直在做的那样初始化。

于 2012-04-30T20:50:09.700 回答
1

这里有几件事可能会导致问题。

可能主要问题是这一行:

self.navigationController.navigationItem.rightBarButtonItem = anotherButton;

我很确定您要设置的是ac视图控制器导航项上的右栏按钮项。

ac.navigationItem.rightBarButtonItem = anotherButton

不过还有一些其他的事情:

  • 不要有两个字母的变量名。“ac”非常模糊,“addContacts”会提供更多信息,“addContactsViewController”会提供更多信息
  • 您是否在子类中实现自己的navigationController属性UIViewController?不建议这样做,因为它会覆盖已有的navigationController属性。UIViewController给它一个不同的名字。
  • 父视图控制器上的-viewDidLoad方法是分配 AddContacts 对象的右栏按钮的地方吗?考虑改为将设置栏按钮的代码放在 AddContacts 的实现中。
于 2012-04-30T20:53:40.667 回答