【问题标题】:iphone: add UIBarButtonItem to UIViewController's UINavigationItem.leftBarButtonItem - weak?iphone:将 UIBarButtonItem 添加到 UIViewController 的 UINavigationItem.leftBarButtonItem - 弱?
【发布时间】:2011-05-24 17:54:33
【问题描述】:

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

导航控制器堆栈的根视图向用户显示了一个搜索栏,用户可以在其中输入文本。完成输入后,用户启动我们网站的一些搜索服务。在搜索执行期间,我想显示一些“状态信息”,因此我将另一个视图控制器 (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 分配给detailViewbackBarButtonItem 属性(当用户触摸结果表视图中的某些条目时,它被推送到navigationController 的堆栈)。

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

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

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

【问题讨论】:

    标签: iphone uinavigationbar uibarbuttonitem uinavigationitem uibarbuttonitemstyle


    【解决方案1】:

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

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

    【讨论】:

    • 是的,感谢您向我指出这个方向.. 这个解决方案对我来说似乎非常好.. 更干净;=)
    • 听从你的建议是个坏主意。现在我正在闲逛并尝试使用像原始 UINavigationController 动画一样的动画从右侧推入新的 UIView - 我应该只是使用视图控制器获取状态信息,这会很糟糕吗?现在我遇到了麻烦,带有 kCATransitionPush 的 CATransition 有一些不好的“FADE”-effekt。这看起来很难看.. 都是因为它不符合使用额外的 uiviewcontroller 进行状态消息传递..
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-24
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 2011-02-01
      • 2023-03-28
      • 2019-06-11
      相关资源
      最近更新 更多