我在使用导航控制器时遇到了问题。
我正在使用tableview,显示一些练习,当你点击练习时,你会进入详细视图,嵌入在nav控制器中 我删除了Tableview,并添加了3个按钮,每个按钮都有“自己的”节目“segue到详细视图。它几乎可以工作,但它现在没有使用我的导航控制器,这意味着视图只是呈现类似于模态演示。 我尝试在一个按钮上删除segue并替换为此操作:
@IBAction func strengthButton(_ sender: UIButton) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let destination = storyboard.instantiateViewController(withIdentifier: "ExerciseViewController") as! ExerciseViewController
destination.componentaccessid = -1;
destination.openedFromUrl = false;
destination.exercise = self.strengthexercise
destination.exercisetype = .strength
self.navigationController?.present(destination, animated: true, completion: nil)
}
但这完全一样。
我有一个准备功能:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let identifier = segue.identifier,
let destination = segue.destination as? ExerciseViewController{
destination.componentaccessid = -1;
destination.openedFromUrl = false;
switch identifier{
case "strengthsegue":
destination.exercise = self.strengthexercise
destination.exercisetype = .strength
case "rangesegue":
destination.exercise = self.rangeexercise
destination.exercisetype = .range
case "combinedsegue":
destination.exercise = self.combinedexercise
destination.exercisetype = .combined
default:
print("Nothing")
}
}
}
答案 0 :(得分:1)
试试这个
self.navigationController?.pushViewController(destination, animated: true)
答案 1 :(得分:1)
在您使用的代码中,
self.navigationController?.present(destination, animated: true, completion: nil)
这只会呈现UIViewController。
改为使用,
self.navigationController?.pushViewController(destination, animated: true)
推送继承了NavigationController的viewController。