【问题标题】:Trying to programmatically add a button to UINavigationController but it never shows up尝试以编程方式向 UINavigationController 添加一个按钮,但它从未出现
【发布时间】:2011-07-01 00:44:17
【问题描述】:

我以编程方式创建了一些 UINavigationController 并将它们添加到 UITabBarController。一切似乎都很好,但我想在导航控制器中添加一个取消按钮,但它从未出现。我尝试了多种方法,但我似乎根本无法影响导航项的显示,并且我已经从这里和其他网站遵循了多个示例,但没有任何反应。

MyTableViewController *mtvc = [[MyTableViewController alloc] init]; 
UINavigationController *myNavController = [[[UINavigationController alloc] initWithRootViewController:mtvc] autorelease];
myNavController.navigationBar.barStyle = UIBarStyleBlackOpaque;  // this works
[mtvc release];

// TODO: figure out why added buttons aren't showing
UIBarButtonItem *closeButton = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(shutDown)] autorelease]; 
myNavController.navigationItem.leftBarButtonItem = closeButton;  // never shows up

我也试过这样添加按钮

[myNavController.navigationItem setLeftBarButtonItem:closeButton animated:NO];  // also doesn't do anything

我开始感到沮丧,所以我也尝试了一些其他的方法,只是想看看我是否能影响任何事情,但无济于事

myNavController.title = @"test";  // does nothing

在将导航控制器添加到 UITabBarController 之前和之后,我都尝试过这样做,但没有帮助。 我也尝试过 rightBarButtonItem 并尝试使用 initWithTitle:而不是 initWithBarButtonSystemItem。

有人可以照亮我吗?显然,我这样做是错误的。

【问题讨论】:

    标签: iphone objective-c ios uinavigationcontroller uibarbuttonitem


    【解决方案1】:

    您是否尝试过像这样设置当前视图控制器的导航项的按钮:

    mtvc.navigationItem.leftBarButtonItem = closeButton;
    

    【讨论】:

      【解决方案2】:

      尝试在MyTableViewControllerloadView 方法中添加条形按钮,如下所示。

      UIBarButtonItem *closeButton = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(shutDown)] autorelease]; 
      self.navigationItem.leftBarButtonItem = closeButton;
      

      我想应该可以。

      【讨论】:

      • 做到了@Simon。谢谢!我有一种感觉,我需要从适当的视图控制器内部执行此操作。我之前曾尝试在 init 方法中执行此操作,这很有意义,但它不起作用。在loadView 方法中执行它就像一个冠军。
      • 注意:它不喜欢我使用autorelease 后跟明确的release。应该是其中之一。
      • @digarok:是的..对不起..那是我的错误..我没有注意到那里的自动释放..
      【解决方案3】:

      如果你需要在 Swift 3.0 中这样做,很简单:

      let closeButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.cancel,
                              target: self,
                              action: #selector({Your-viewController}.{close-method}))
      self.navigationItem.leftBarButtonItem = closeButton
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-10
        • 1970-01-01
        • 1970-01-01
        • 2016-07-22
        相关资源
        最近更新 更多