从ViewController导航回SWRevealViewController首页

时间:2015-11-30 08:48:47

标签: ios swift uitableview uinavigationcontroller swrevealviewcontroller

Navigation from view controller back to SWReveal Front Page

如图所示,底部有3个控制器(HomeTableViewController,NavigationViewController和NewsViewController)

HomeTableViewController是我正在使用SWRevealViewController并将其设置为首页的主页面。 (sw_front)

在HomeTableViewController中选择了一行之后,它可以导航到NewsTableViewController。但是,我在NewsViewController中添加了一个后退按钮,导航回上一页HomeTableViewController,我无法用这段代码做到这一点。

在HomeTableViewController中,通过选择一行导航到NewsViewController

@IBAction func btnBack(sender: AnyObject)
{
    let home = HomeTableViewController()
    self.presentViewController(home, animated: true, completion: nil)
}

在NewsViewController中,按返回按钮返回上一页

@IBAction func btnBack(sender: AnyObject)
{
    let home = HomeTableViewController()
    self.presentViewController(home, animated: true, completion: nil)
}

如果我按下NewsViewController中的后退按钮,则会出现此错误。

  

致命错误:在解包可选值时意外发现nil

self.revealViewController().rearViewRevealWidth = 200

此代码有错误,位于HomeTableViewController中。 我希望有人可以帮助我。谢谢。

3 个答案:

答案 0 :(得分:0)

您需要dismiss presented viewController

@IBAction func btnBack(sender: AnyObject)
{
    let home = HomeTableViewController()
    self.dismissViewControllerAnimated(true, completion:nil);
}

答案 1 :(得分:0)

您收到此错误是因为您在HomeTableViewController中创建了新的btnBack(此新控制器可能没有revealViewController)。没有必要这样做。您可以拨打self.dismissViewControllerAnimated(true, completion:{});致电Islam Q.建议:

@IBAction func btnBack(sender: AnyObject)
{
    self.dismissViewControllerAnimated(true, completion:nil);
}

答案 2 :(得分:0)

https://github.com/John-Lluch/SWRevealViewController/issues/516#issuecomment-160590440 这解决了我的问题。 删除Home和News Controller之间的导航控制器,并使用从Home到NewsViewController的推送Segue。