2015-08-25 32 views
1

我正在使用名为SwiftPages的库。它工作正常。但是当我从这个视图控制器执行推Segue到另一个导航栏self.navigationController是零?navigationController在执行segue时为零?

如何将导航栏添加到推送的VC?

的ViewController

class CoursePageController: UIViewController, UITableViewDataSource, UITableViewDelegate { 

    @IBOutlet weak var ChapterTable: UITableView! 

    @IBOutlet weak var courseDesc: UITextView! 

     var CourseName : String! 

     var ChapName : [String] = [] 
     var ChapId : [String] = [] 


    override func viewDidLoad() { 
     super.viewDidLoad() 



     self.title = CourseName 
     self.courseDesc.text = CourseDescriptionC 
     self.courseDesc.setContentOffset(CGPointZero, animated: true) 
     HUD() 
     ChapterTable.estimatedRowHeight = 120 
     ChapterTable.rowHeight = UITableViewAutomaticDimension 
     getData() 
    } 

    func HUD(){ 
      progress.show(style: MyStyle()) 
    } 

    func getData(){ 
     Alamofire.request(.GET, "http://www.wve.com/index.php/capp/get_chapter_by_course_id/\(CourseIdinController)") 
      .responseJSON { (_, _, data, _) in 
       let json = JSON(data!) 
       let catCount = json.count 
       for index in 0...catCount-1 { 
        let cname = json[index]["CHAPTER_NAME"].string 
        let cid = json[index]["CHAPTER_ID"].string 
        self.ChapName.append(cname!) 
        self.ChapId.append(cid!) 
       } 
       self.ChapterTable.reloadData() 
       self.progress.dismiss() 
     } 
    } 


    func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     // #warning Potentially incomplete method implementation. 
     // Return the number of sections. 
     return 1 
    } 

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     // #warning Incomplete method implementation. 
     // Return the number of rows in the section. 
     return ChapName.count 
    } 


    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell : UITableViewCell = self.ChapterTable.dequeueReusableCellWithIdentifier("ChapCell") as! UITableViewCell 
     cell.textLabel?.text = self.ChapName[indexPath.row] 

     return cell 
    } 


     func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
     //Here the navigationController is nil 
self.navigationController?.pushViewController(self.storyboard!.instantiateViewControllerWithIdentifier("LessonController") as! UIViewController, animated: true) 
    //  performSegueWithIdentifier("ChapSegue", sender: nil) 
     } 

编辑

我已经添加了导航控制器作为我的初始VC。课程页面控制器显示在SwiftPages中。

我找不到它是如何呈现的。请看看这个文件。 https://github.com/GabrielAlva/SwiftPages/blob/master/SwiftPages/SwiftPages.swift

在此先感谢!

+0

请检查您的idenfitier “LessonController” –

回答

2

你把NavigationPageController放在NavigationController中吗?如果是,那么检查它是如何呈现的?

如果以模态方式呈现,那么您将无法获得navigationController引用。

,如果你有navController为RootViewController的

if let navController = UIApplication.sharedApplication().keyWindow?.rootViewController as? UINavigationController { 
      //get the nav controller here and try to push your anotherViewController 
     } 
+0

见编辑... – user5184878

+0

你有navigationController为RootViewController的这是否行得通呢? –

+0

是的。我用这样的上面。 如果让navController = UIApplication.sharedApplication().keyWindow?.rootViewController as? UINavigationController的{// 这里得到导航控制器,并尝试把你的anotherViewController self.navigationController .pushViewController(self.storyboard .instantiateViewControllerWithIdentifier( “LessonController”)作为UIViewController中,动画:!真的)! } 但它不没有工作 – user5184878