如何切换 ios 导航栏中的额外按钮?

How can I toggle extra buttons in the navigation bar for ios?

我目前的导航栏有点笨重。在下图中,搜索按钮显示了一个搜索栏,其中还显示了一个取消按钮。我想在这里做的是有一个按钮可以滑动 in/displays 当前的右栏按钮项目。

搜索按钮完全在情节提要中创建,但由于情节提要中的栏项限制,类别按钮是使用我在情节提要中设置的 segue 标识符以编程方式添加的。首先,我们有与按钮相对应的代码,然后是屏幕截图。请记住,这是针对右侧栏按钮项目的。

按钮初始化
self.categoryButtonItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Categories", @"categories button") style:UIBarButtonItemStylePlain target:self action:@selector(categoryButtonDidPress:)];

self.navigationItem.rightBarButtonItems =[self.navigationItem.rightBarButtonItems arrayByAddingObject:self.categoryButtonItem];
按钮的委托方法
-(void) categoryButtonDidPress:(UIBarButtonItem *)sender {
    [self performSegueWithIdentifier:@"categorySegueTable" sender:nil];
}

- (IBAction)searchButtonPressed:(id)sender {
    self.navigationItem.titleView = self.searchBarTable;

    self.searchBarTable.showsCancelButton = NO;

    if (self.searchBarTable.hidden == YES) {
        self.searchBarTable.hidden = NO;
    }
}

-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar{
    [self.searchBarTable resignFirstResponder];
    self.searchBarTable.hidden = YES;
}

-(void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar{
    self.searchBarTable.showsCancelButton = YES;
}

与其在右侧添加两个按钮,您可能会发现在右侧添加一个 segmentedController 和 2 个段(按钮)会更容易,它会减少 space 并使其成为更易于管理。此外,您可能希望用图标替换类别一词以帮助压缩右侧。