如何切换ios导航栏中的其他按钮?

如何切换ios导航栏中的其他按钮?,ios,objective-c,uinavigationbar,slide,Ios,Objective C,Uinavigationbar,Slide,我现在有一个导航栏,有点笨重。在下图中,“搜索”按钮显示一个搜索栏,其中还显示一个“取消”按钮。我想在这里做的是有一个按钮,可以滑入/显示当前的右栏按钮项 搜索按钮完全在故事板中创建,但由于故事板中的条形项目限制,使用我在故事板中设置的序列标识符以编程方式添加了类别按钮。首先,我们有与按钮对应的代码,然后是屏幕截图。请记住,这是针对右栏按钮项的 按钮已初始化 self.categoryButtonItem = [[UIBarButtonItem alloc] initWithTitle:NSLo

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

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

按钮已初始化
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;
}

您可能会发现,不需要在右侧添加两个按钮,而只需在右侧添加一个带有两个段(按钮)的
分段控制器
,这将减少空间并更易于管理。此外,您可能希望用图标替换单词类别,以帮助压缩右侧。

按钮的图标将稍后在项目中出现。我是Bloc.io的学生,目前我正在寻找一种最低可行的产品。换句话说,我只需要让应用程序在需要的用户故事中运行。今天我和导师开了一次会,他建议我研究一下所描述的方法。你知道如何在导航栏中滑动当前按钮吗?如果你真的想在中设置按钮的动画,最好是创建一个自定义UIIView。将按钮添加到视图中,然后使用UIView动画,类似于
animateWithDuration:delay:options:animations:completion:
好的,为了让我理解您的意思,实际上是将视图拖到视图控制器的导航栏上,然后将按钮放在其中?然后在新视图上使用动画?如果是这样,uibarbuttonim将不再在视图中工作。按钮必须为UIButton类型(这将限制按钮系统类型)。不管怎样,您可以考虑使用当前uibarbuttonims的其他方法吗?这是我认为唯一可行的其他方法,并且它仍然需要大量的尝试和错误,因为您将在导航控制器堆栈中对视图本身的动画进行斗争。这就是为什么我推荐使用分段控制器。最后的想法是,如果你的应用程序是为iOS 8和以上(或者只为iPad),你可以考虑使用<代码> UIPopoverController <代码>作为一个替代的解决方案。