无法在导航栏上添加按钮

发布于 2024-10-21 10:29:05 字数 528 浏览 5 评论 0原文

我有带有项目的 UItable。我有导航栏等。在表“类别”中的一项上,我放置另一个 UITable,如下所示:

CategoryTableViewController *b = [[CategoryTableViewController alloc]init];
        [self.navigationController pushViewController:b animated:YES];
        [b release];

现在我想在导航栏中添加“ADD”按钮,并在 *.xib 中添加 UINavigationBarItem 将其连接到插座并像这样添加在 viewDidLoad 中:

self.navigationItem.rightBarButtonItem = self.addButton;

这不起作用(addButton 为空),但是当我在第一个 UITable 中添加用于添加按钮的相同代码时,它工作正常并且添加了“ADD”按钮。

这里可能有什么问题?

I have UItable with items. I have navigation bar etc. On one item in table "Category" I pust another UITable like this:

CategoryTableViewController *b = [[CategoryTableViewController alloc]init];
        [self.navigationController pushViewController:b animated:YES];
        [b release];

Now I want to add "ADD" button in navigation bar and I add UINavigationBarItem in *.xib connect it to outlets and add it like this in viewDidLoad:

self.navigationItem.rightBarButtonItem = self.addButton;

And this does not work (addButton is null), but when I put the same code for adding button in my first UITable it works fine and "ADD" button is added.

What could be the problem here?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

千笙结 2024-10-28 10:29:05

在应该在导航栏中显示按钮的 ViewController 中,在 viewDidLoad() 方法中键入:

self.addToolbarButton = [[[UIBarButtonItem alloc]           
initWithTitle:@"Add", nil)
    style:UIBarButtonSystemItemAdd 
    target:self
    action:@selector (add)] autorelease];
self.navigationItem.leftBarButtonItem = addToolbarButton;

这将在导航栏中的左侧添加一个“添加”样式的按钮,该按钮调用选择器方法:

-(void) add {...}

点击时在同一个类中。在同一类的此方法中,您可以指定添加逻辑。如果此方法应放置在不同的类中,请将目标设置为该类。

这就是解决这个问题的编程方法。方法“-(void) add”是您的 Outlet 在 .xib 方法中使用的方法。

对于您的 .xib 方法,您应该验证 navigationBarButton 的 Outlet 属性是否设置为保留。

In the ViewController that should show the button in the navigation bar type in the viewDidLoad() method:

self.addToolbarButton = [[[UIBarButtonItem alloc]           
initWithTitle:@"Add", nil)
    style:UIBarButtonSystemItemAdd 
    target:self
    action:@selector (add)] autorelease];
self.navigationItem.leftBarButtonItem = addToolbarButton;

That will add a "add" styled button to the left in the navigation bar which calls the selector method:

-(void) add {...}

in the same class when it is tapped. In this method in the same class you can specify your add logic. If this method should be placed in a different class, set the target to that.

That is the programatical way to solve this. The method "-(void) add" is what your Outlet has been in the .xib approach.

For your .xib approach you should verify that the Outlet property for the navigationBarButton is set to retain.

陪我终i 2024-10-28 10:29:05

self.addButton 为 NULL,因此请确保其不为 NULL。从代码创建一个按钮。

UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneMeasuring:)];

self.addButton is NULL, thus make sure its not NULL. Create a button from code.

UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneMeasuring:)];
就此别过 2024-10-28 10:29:05

[super viewDidLoad]; viewDidLoad 方法中的第一个调用吗?

如果没有尝试将其放在 viewDidLoad 的最开始处。

is [super viewDidLoad]; the first call in your viewDidLoad method?

If not try to put it at the very beginning of viewDidLoad.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文