【问题标题】:Update items dynamically in toolbar of navigation controller在导航控制器的工具栏中动态更新项目
【发布时间】:2011-06-04 20:06:29
【问题描述】:

我有带有工具栏的导航控制器。工具栏包含一个带有三个项目的分段控件。当用户在此控件中选择一个段时,我需要更新工具栏并添加其他项目。 我在 viewDidLoad 中尝试了下一个代码:

-(void)viewDidLoad {
    [super viewDidLoad];

    [self setToolbarItems:items_array];
}

在 didChangeSegmentControl 事件处理程序中:

-(void)didChangeSegmentControl:(UISegmentedControl*)sender {
    NSArray* items = [self currentToolbarItems];
    [self setToolbarItems: items];
}

但是在更改了 didChangeSegmentControl 中的工具栏项后,它们就消失了。 如何更新不在 viewDidLoad 方法中的工具栏项目?

【问题讨论】:

  • 你确定currentToolbarItems中有项目吗?听起来它是空的,这就是它从工具栏中删除项目的原因
  • 我确定,currentToolbarItems 包含项目,在 [self setToolbarItems: items] 之后,[self toolbarItems] 的计数不为零。

标签: iphone uinavigationcontroller uitoolbar


【解决方案1】:

看来,我已经找到了这个问题的答案。 在 [self currentToolbarItems] 例程中,我将 UISegmentedControl 包装在 UIBarButtonItem 中。当使用相同的 UISegmentedControl 两次创建 UIBarButtonItem 并将其分配给工具栏项时,工具栏不会显示它。 因此,我不是每次都使用相同的控件创建 UIBarButtonItem,而是重复使用它。

【讨论】:

  • 今天早上我一直在努力解决这个问题一个小时,你的回答解决了这个问题。
  • 我还没试过你的方法,迫不及待地想回家做。我有这个问题,希望你的方法能解决。在我的 viewdidappear 中,我添加了一个 ivar uislider > uibuttonitem > navigation.toolbar。一切正常。但是在我调出一个模态视图(即 MFMailViewComposer)并关闭它之后,我的滑块消失了。呜?我发现在关闭模式之后,我的视图 viewdidappear 再次被调用,显然我再次将 ivar uislider 添加到新的 uibuttonitem 并将其设置在 navigation.toolbar 中。现在我应该有一个 ivar uibuttonitem 而不是 ivar uislider。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多