我的节目不使用NavigationController

时间:2017-03-29 10:16:38

标签: ios swift xcode segue

Storyboard

我在使用导航控制器时遇到了问题。

我正在使用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")
        }

    }
}

2 个答案:

答案 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。