2016-03-31 43 views
0

ScreenShot我是iOS新手。我使用的是swift 2和xcode 7.我在使用splitViewController的iPhone上試用了一個應用程序。我擁有適用於MasterView和DetailView的navigationControllers。將圖像更改爲圖像後,無法保留默認的後欄按鈕動作

我面臨的確切問題是: 如果我將後欄按鈕項目更改爲DetailView中的圖像,那麼其默認屬性不工作.ie它不會返回到masterview(RootViewController) 。但我需要有一個後退按鈕的圖像。我通過引用stackOverflow和其他幾個網站嘗試了很多東西。

popToRootViewController和popToViewController無法使用,因爲我有2個不同的navigationController master和detailview。現在,我希望當我在DetailView中點擊backBarButton Image時,它應該返回到masterView。

但我無法做到!請給我一些建議。

預先感謝您。圖片資源

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

改變「BackIcon」你的形象的名字:

回答

0

如果你把這個在你的AppDelegate didFinishLaunchingWithOptions,你可以很容易地在所有地方更改默認後退按鈕。請注意,您必須設置過渡蒙版和渲染模式(如上所示)才能正確更改圖像。

更新:對於只有一個後退按鈕,您可以使用類似的方法,將其添加到屏幕上(在您看到後退按鈕之前 - 例如masterViewController)viewDidLoad或您將要推送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) 
    } 
}  
+0

謝謝!我知道這個解決方案,但我想改變只有一個後退按鈕的圖像,而不是通過應用程序。 – Pooja

+0

檢查我的更新 –

+0

我在DetailViewController的viewDidLoad方法中添加了上面的代碼。它沒有工作。我仍然得到默認的後退按鈕。 – Pooja