将其更改为图像后无法保留默认的后退栏按钮操作
Unable to retain the default back bar button action after changing it to an image
ScreenShot 我是 iOS 的新手。我正在使用 swift 2 和 xcode 7。我正在 iphone 上试用一个应用程序,使用 splitViewController.I 有 MasterView 和 DetailView 的导航控制器。
我面临的确切问题是:
如果我将后退栏按钮项目更改为 DetailView 中的图像,则其默认 属性 不是 working.i。e 它不会返回到 masterview(RootViewController)。但我需要有一个后退按钮的图像。我通过参考 Whosebug 和其他几个网站尝试了很多东西。
无法使用 popToRootViewController 和 popToViewController,因为我有 2 个不同的导航控制器用于主视图和细节视图。现在,我希望当我在 DetailView 中单击 backBarButton Image 时,它应该返回到 masterView。
但是我做不到!请给我一些建议。
提前致谢。
如果将其放入 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)
}
}
ScreenShot 我是 iOS 的新手。我正在使用 swift 2 和 xcode 7。我正在 iphone 上试用一个应用程序,使用 splitViewController.I 有 MasterView 和 DetailView 的导航控制器。
我面临的确切问题是: 如果我将后退栏按钮项目更改为 DetailView 中的图像,则其默认 属性 不是 working.i。e 它不会返回到 masterview(RootViewController)。但我需要有一个后退按钮的图像。我通过参考 Whosebug 和其他几个网站尝试了很多东西。
无法使用 popToRootViewController 和 popToViewController,因为我有 2 个不同的导航控制器用于主视图和细节视图。现在,我希望当我在 DetailView 中单击 backBarButton Image 时,它应该返回到 masterView。
但是我做不到!请给我一些建议。
提前致谢。
如果将其放入 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)
}
}