0

我在我的应用程序中使用了一个标签栏控制器,第一个标签下是一个导航控制器。

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

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

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

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属性detailView(当用户触摸结果表视图中的某些条目时,它被推送到导航控制器的堆栈)。

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

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

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

4

2 回答 2

1

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

真正的问题是你将额外的控制器推入导航堆栈的方法——你不应该将任何东西推入堆栈,除非它是用户想要导航回的东西。重新编写代码以在与搜索栏相同的视图控制器中显示状态显示和搜索结果。仔细看看像 iTunes Store 这样的内置应用程序是如何进行搜索并尝试复制它们的行为的。

于 2011-05-24T19:08:59.667 回答
0

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

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

于 2011-05-24T18:18:36.817 回答