objective-c - iOS 8 自定义后退按钮

标签 objective-c ios8 back uinavigationitem

我在 iOS 7 中制作了一个应用程序,当我切换到 Xcode 6.1 和 iOS 8.1 时,我的自定义后退按钮不再出现,它们只显示以前的 View Controller 标题——这是默认的。

我正在使用:

self.navigationItem.backBarButtonItem.title = @"";
self.navigationItem.backBarButtonItem.tintColor = [UIColor whiteColor];

这不再有效,我确保设置委托(delegate)...(分别在 .h 和 .m 中)

.h

<UINavigationControllerDelegate, UINavigationBarDelegate>

.m

 self.navigationController.delegate = self;

我不知道你在 iOS8 中是否有不同的做法,我搜索了论坛,似乎只能弄清楚如何隐藏后退按钮。我知道您必须在父 VC 中设置后退按钮文本,以便隐藏我自己,我在两个 VC 中包含了相同的代码。

这段代码有效,所以我知道我有一定的能力与我的导航栏进行通信,所以我在那里没有问题...

self.navigationItem.title = @"New <type>";

谢谢

最佳答案

有时您需要使用 barButtonItems 创建新的,而不是修改旧的。我试过你的代码,但它对我也不起作用。这有效

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    UIBarButtonItem *item = [[UIBarButtonItem alloc] init];
    item.title = @"Title";
    self.navigationItem.backBarButtonItem = item;
}

编辑

这段代码需要在之前的 View Controller 中,而不是有后退按钮的 View Controller 中。前任。如果 viewController A segue 到 viewController B 并且您希望 View Controller B 上的后退按钮显示“Backy”而不是 viewController A 的标题,那么您实际上将这段代码放在 viewController A 中,而不是 viewController B

编辑 2

要动态更改 View Controller 的后退按钮标题,请在推送 viewController 之前替换 backBtn,并为其指定适当的标题。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    let barBtnItem = UIBarButtonItem()
    navigationItem.backBarButtonItem = barBtnItem
    if segue.identifier == "seg1" {
        barBtnItem.title = "Hello 1"
    } else if segue.identifier == "seg2" {
        barBtnItem.title = "Hello 2"
    }
}

关于objective-c - iOS 8 自定义后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27695253/

相关文章:

java - 如何停止按下背面的媒体播放器,无论它是否正在播放?

button - 如何使用WebView和WebEngine对JavaFX中的“后退”和“前进”按钮进行编程?

ios - WatchKit:在用户点击后退(取消)左上角按钮后调用 popToRootController

objective-c - Objective-C 中的 SPM Bundle.module 等价物是什么

ios - UILabel AutoShrink 属性在 iOS 7 中不起作用

ios - 在 Objective c 中使用 Swift 类。发生未声明的标识符错误

ios - 在点击按钮时插入导航 Controller

objective-c - 将 NSString 转换为 NSDictionary

uitableview - 隐藏在大灰色框后面的 TableView

ios - 开发者在 Apple Watch 上使用 "Taptic Engine"