Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 更改为图像后,无法保留默认的back bar按钮操作_Ios_Swift_Uinavigationcontroller_Uinavigationbar - Fatal编程技术网

Ios 更改为图像后,无法保留默认的back bar按钮操作

Ios 更改为图像后,无法保留默认的back bar按钮操作,ios,swift,uinavigationcontroller,uinavigationbar,Ios,Swift,Uinavigationcontroller,Uinavigationbar,我是iOS新手。我使用的是swift 2和xcode 7。我正在用splitViewController在iphone上试用一个应用程序。我有MasterView和DetailView的NavigationController 我面临的确切问题是: 如果我将back bar按钮项更改为DetailView中的图像,则其默认属性不起作用。即,它不会返回masterview(RootViewController)。但是我需要一个后退按钮的图像。我已经通过引用stackOverflow和其他几个站点尝

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

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

无法使用popToRootViewController和popToViewController,因为主视图和详细视图有两个不同的导航控制器。现在,我希望当我在DetailView中单击backBarButton图像时,它应该返回到masterView

但我做不到!请给我提个建议


提前感谢您。

如果您将此项放入应用程序中,Delegate
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) 
    } 
}    

谢谢我知道这个解决方案,但我只想更改一个后退按钮的图像,而不是整个应用程序。我在DetailViewController的viewDidLoad方法中添加了上述代码。它不起作用。我仍在使用默认的后退按钮。在看到后退按钮之前,您需要将其添加到按下的屏幕中(在您的情况下是masterViewController)。在masterViewController中,我应该在何处添加此按钮?哪种方法?我将代码添加到masterViewController的viewDidLoad方法中。图像将显示,但文本(背面)也可见,并显示在链接到masterViewController的ViewController上!