iphone:将UIBarButtonItem添加到UIViewController的UINavigationItem.leftBarButtonItem - 弱?

时间:2011-05-24 17:54:33

标签: iphone uinavigationbar uibarbuttonitem uinavigationitem uibarbuttonitemstyle

我在我的应用程序中使用tabbar控制器,在第一个选项卡下面是一个navigationcontroller。

导航控制器堆栈的根视图向用户显示搜索栏,他可以在其中输入文本。在完成输入后,用户启动我们网站的一些搜索服务。在搜索执行期间,我想显示一些“状态信息”,所以我在导航控制器的堆栈上推送另一个viewcontroller(statusInfoController)。

搜索完成后(最多需要10秒),结果表控制器将被推送到导航控制器堆栈。

现在我想在uinavigationbar中显示一些后退按钮,它将用户带回到根视图控制器。我在结果表控制器的viewWillAppear - 方法中执行了以下操作:

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Zurück21" 
                                                                   style:UIBarButtonItemStyleBordered
                                                                  target:self
                                                                  action:@selector(popBackToFirstView)];

    self.navigationItem.leftBarButtonItem = backButton;
    UIBarButtonItem *backButton2 = [[UIBarButtonItem alloc] initWithTitle:@"Zurück22" 
                                                                   style:UIBarButtonItemStylePlain
                                                                  target:nil
                                                                  action:nil];
    self.navigationItem.backBarButtonItem = backButton2;
    self.navigationItem.title = [self.lastSearch suchAnfrage];

    [backButton release];
    backButton = nil;
    [backButton2 release];
    backButton2 = nil;

我在这个类中实现了popBackToFirstView - 方法。第二个UIBarButtonItem分配给backBarButtonItem的{​​{1}}属性(当用户触摸结果表视图中的某个条目时,会被推送到navigationController的堆栈中。)

我的问题:来自detailView的所有后退按钮左侧都有一个箭头,但分配给self.navigationItem.backBarButtonItem的按钮是一个普通按钮,没有箭头。

如何在“特殊”后退按钮上添加箭头?我应该使用哪种款式?

或者我应该使用标准后退按钮?但是,必须有任何其他方式“跳过”statusInfoController-View?

2 个答案:

答案 0 :(得分:1)

你正在寻找错误的解决方案。

真正的问题是你将额外的控制器推送到导航堆栈的方法 - 你不应该把任何东西都推到堆栈上,除非它是用户想要导航回去的东西。重做代码以在与搜索栏相同的视图控制器中显示状态显示和搜索结果。仔细查看iTunes Store等内置应用程序如何搜索并尝试复制其行为。

答案 1 :(得分:0)

我认为后退箭头功能是让SDK控制您使用导航栏的集成部分。

唯一的解决方案 - 如果你可以这么称呼 - 就是编写自己的自定义导航栏类​​,作为UIViewController的子类(使用NIB使其更容易),然后你就拥有了所有的灵活性可能想要。