2017-08-10 127 views
0

你好,我是在視圖控制器B帶其導航欄,按鈕,在視圖控制器乙按去的ViewController C(我不想在導航欄的viewController C)Segue公司回來導航欄

let vc = self.storyboard?.instantiateViewController(withIdentifier: "viewC") as! ViewcontrollerC 
    vc.passAction = "saveedit" 
    vc.passName = passName 
    self.present(vc, animated: true, completion: nil) 

當我點擊保存按鈕在ViewcontrollerC我應該回去ViewcontrollerB與ViewcontrollerB導航欄

let vc = self.storyboard?.instantiateViewController(withIdentifier: "viewB") as! ViewcontrollerB 
      vc.passName = "\(firstNameTxt.text!)\(" ")\(lastNameTxt.text!)" 
      self.present(vc, animated: false, completion: nil) 

這裏的問題是,當我回到ViewcontrollerB我沒有看到導航欄那裏。

EDITED

class ViewcontrollerB : UpdateDataDelegate { 

    override func viewWillAppear(_ animated: Bool) { 
     super.viewWillAppear(animated); 
     self.navigationController?.isNavigationBarHidden = false 
    } 


@IBAction func click_edit(_ sender: Any) { 

    let vc = self.storyboard?.instantiateViewController(withIdentifier: "patientPersonalData") as! patientPersonalDataVC 
    vc.passName = passName 
    vc.passAction = "saveedit" 

    self.navigationController?.pushViewController(vc, animated: true) 

    } 

func loadData() { 

} 
} 

// ViewcontrollerC

protocol UpdateDataDelegate { 
    func loadData() 
} 
class Viewcontroller C { 
var delegate: UpdateDataDelegate? 

override func viewWillAppear(_ animated: Bool) { 
     super.viewWillAppear(animated) 
     self.navigationController?.isNavigationBarHidden = true 
    } 

fun click_save() { 
self.navigationController?.popViewController(animated: true) 
self.delegate?.loadData() 
} 

}

+0

你嵌入您的視圖 - 控制與導航控制器 –

+0

@ Anbu.Karthik是的,在故事板與導航控制器 – swiftuser123

回答

-1

試試這個..取消隱藏的導航欄在viewControllerC的viewWillAppear中,並把它藏在viewControllerB的viewWillAppear中。

//ViewController C 
override func viewWillAppear(_ animated: Bool) { 
super.viewWillAppear(animated) 
self.navigationController?.isNavigationBarHidden = true 
} 

//ViewController B 
override func viewWillAppear(_ animated: Bool) { 
super.viewWillAppear(animated); 
self.navigationController?.isNavigationBarHidden = false 
} 

試試這個,然後

//ViewController C 
override func viewWillAppear(_ animated: Bool) { 
super.viewWillAppear(animated) 
self.navigationController?.setNavigationBarHidden(true, animated: true) 
} 

//ViewController B 
override func viewWillAppear(_ animated: Bool) { 
super.viewWillAppear(animated); 
    self.navigationController?.setNavigationBarHidden(false, animated: true) 
} 
+0

連接我想這並沒有爲我工作 – swiftuser123

+0

嘗試編輯答案 –

1

看來你創建一個新的ViewcontrollerB。 試試這個回到ViewcontrollerB。

self.dismiss(animated: true, completion: nil) 
1

你爲什麼不乾脆就按Save按鈕辭退ViewcontrollerC

ViewcontrollerC

var closure: ((String)->())? //Set this closure when you present ViewcontrollerC from ViewcontrollerB 

func save() 
{ 
    self.dismiss(animated: true) {[weak self] in 
     self?.closure?("Your_Data") 
    } 
} 

這將你搬回ViewControllerB其中navigation bar已經存在。

您不需要在任何地方隱藏/顯示navigation bar,既不會顯示ViewControllerC,也不需要關閉它。

+0

但在這裏你不能將數據發送到前一個控制器。我想將我在ViewcontrollerC中添加的新數據發送給ViewcontrollerB。 – swiftuser123

+0

您可以爲此使用閉包,並在完成解僱方法時調用閉包。 – PGDev

+0

我編輯了答案。看一看。 – PGDev

0

嘗試使用導航控制器

let vc = self.storyboard!.instantiateViewController(withIdentifier: "viewC") as! ViewcontrollerC 
let navController = UINavigationController(rootViewController: vc) 
self.present(navController, animated:true, completion: nil) 

出示它,並添加下面一行在你ViewcontrollerC的viewWillAppear中的方法。

override func viewWillAppear(_ animated: Bool) { 
super.viewWillAppear(animated) 
self.navigationController?.isNavigationBarHidden = true 
} 

當離開ViewcontrollerC的viewWillDisAppear方法。

override func viewWillDisAppear(_ animated: Bool) { 
super.viewWillDisAppear(animated) 
self.navigationController?.isNavigationBarHidden = false 
}