需要 2 个 UIBarButtonItem 后退按钮所在的位置

Posted

技术标签:

【中文标题】需要 2 个 UIBarButtonItem 后退按钮所在的位置【英文标题】:Need 2 UIBarButtonItems where back button is located 【发布时间】:2011-04-08 04:20:40 【问题描述】:

我有一个典型的 UINavigationController 方案,但我有很多视图,这可能意味着您最终可以将很多视图堆叠在一起。我想提供一个主页按钮,最初我打算把它放在导航栏的右侧;但是,我有一个搜索栏和另一个按钮,所以我希望把它放在后退按钮旁边。

在 ascii 艺术中:

< Back |  |Home|                Title              |Browse| [Search Bar]

现在我尝试使用以下方法设置前一个视图控制器的 backButtonItem:

        UIToolbar* toolbar = [[UIToolbar alloc]
                          initWithFrame:CGRectMake(0, 0, 100, 45)];
    [toolbar setBarStyle: UIBarStyleBlackOpaque];

    // create an array for the buttons
    NSMutableArray* buttons = [[NSMutableArray alloc] initWithCapacity:3];

    UIBarButtonItem *back = [[UIBarButtonItem alloc] init];
    back.title = @"Back";

    // create a standard save button
    [buttons addObject:back];
    [back release];

    // create a spacer between the buttons
    UIBarButtonItem *spacer = [[UIBarButtonItem alloc]
                               initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
                               target:nil
                               action:nil];
    [buttons addObject:spacer];
    [spacer release];

    UIBarButtonItem *homeButton = [[UIBarButtonItem alloc]
                                   initWithImage:[UIImage imageNamed:@"home32.png"] 
                                   style:UIBarButtonItemStylePlain 
                                   target:self 
                                   action:@selector(onHomeButton:)];
    homeButton.style = UIBarButtonItemStyleBordered;
    [buttons addObject:homeButton];
    [homeButton release];

    // put the buttons in the toolbar and release them
    [toolbar setItems:buttons animated:NO];
    [buttons release];

    // place the toolbar into the navigation bar
    self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]
                                             initWithCustomView:toolbar];
    [toolbar release]; 

但这似乎并不能取代标准的后退按钮。如果我只尝试一个 UIBarButtonItem 并设置 backButton,那就可以了。

现在我尝试的另一种方法是在压入堆栈的视图上设置 leftBarButtonItem 但我似乎无法找到一种方法来创建左侧有尖形状的后退按钮。

有什么建议吗?

【问题讨论】:

【参考方案1】:

你可以试试

self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc]
                                             initWithCustomView:toolbar];

祝你好运

【讨论】:

这似乎是正确的解决方法。将 backBarButtonItem 设置为不同于 UIBarButtonItem(不是 UIView 子类)的 UIView 子类。 我刚试了,不行。我得到了按钮,但没有后面那个尖形状的按钮。 您可以将图像放入新按钮中,就像指向一个按钮一样。祝你好运

以上是关于需要 2 个 UIBarButtonItem 后退按钮所在的位置的主要内容,如果未能解决你的问题,请参考以下文章

添加 UIBarButtonItem 覆盖 UINavigationController 后退按钮

反转 UIBarButtonItem“播放”以用作后退按钮?

使用自定义字体时,UIBarButtonItem 在后退手势上跳转

UIBarButtonItem 的默认后退按钮背景图像出现在我的自定义

编辑时如何用导航控制器中的另一个 UIBarButtonItem 替换后退按钮?

iOS:删除左侧 uibarbuttonitem 之间的间隙