将图像更改为图像后,无法保留默认的后退按钮操作

时间:2016-03-31 07:53:56

标签: ios swift uinavigationcontroller uinavigationbar

ScreenShot我是iOS新手。我正在使用swift 2和xcode 7.我正在使用splitViewController在iphone上试用一个应用程序。我有MasterView和DetailView的navigationControllers。

我面临的确切问题是: 如果我将后退栏按钮项更改为DetailView中的图像,则其默认属性不起作用。它不会返回到masterview(RootViewController)。但我需要有一个后退按钮的图像。我通过引用stackOverflow和其他几个站点尝试了很多东西。

popToRootViewController和popToViewController无法使用,因为我有2个不同的navigationController用于master和detailview。现在,我希望当我在DetailView中单击backBarButton Image时,它应该返回到masterView。

但我无法做到!请给我一些建议。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果您将其放入AppDelegate didFinishLaunchingWithOptions,您可以轻松更改所有位置的默认后退按钮:

//Back Image On Whole App
let backImage = UIImage(named: "BackIcon")!.imageWithRenderingMode(.AlwaysOriginal)
UINavigationBar.appearance().backIndicatorTransitionMaskImage = backImage
UINavigationBar.appearance().backIndicatorImage = backImage

更改' BackIcon'到图像资源中的图像名称。请注意,您必须设置过渡蒙版和渲染模式(如上所示)才能正确更改图像。

更新:对于只有一个后退按钮,你可以使用类似的方法,将它添加到viewDidLoad上推送的屏幕(在你看到后退按钮 - 例如masterViewController之前)或你要推送detailVC的地方(所以你可以找出它要推进的屏幕,只改变你想要的屏幕:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    if indexPath.row == 1 { 
        //Back Image On The Pushed-to Screen, only on tapped index 1
        let backImage = UIImage(named: "BackIcon")!.imageWithRenderingMode(.AlwaysOriginal)
        self.navigationController.navigationBar.backIndicatorTransitionMaskImage = backImage
        self.navigationController.navigationBar.backIndicatorImage = backImage
        self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .Plain, target: nil, action: nil) //To Remove The Title

        self.performSegueWithIdentifier("showDetails", sender: self) 
    } 
}