【问题标题】:From ViewController navigate back to SWRevealViewController Front Page从 ViewController 导航回 SWRevealViewController Front Page
【发布时间】:2016-03-03 20:25:40
【问题描述】:

如图所示,底部有 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 中。 我希望有人能在这方面帮助我。谢谢。

【问题讨论】:

  • 你是怎么解决的?

标签: ios swift uitableview uinavigationcontroller swrevealviewcontroller


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我已经删除了之前的代码并在其中添加了您的代码,它没有任何响应,我是否需要创建从 NewsViewController 到 HomeTableViewController 的任何 segue?
    • 不,没有segue应该没问题。是否有可能推送 NewsViewController(通过self.navigationController?.pushViewController(...))?如果是这样,那么您需要弹出它self.navigationController?.popToRootViewControllerAnimated(true)
    • 我无法使用 pushViewController,因为我想导航回 TableView,所以 tableView 不适用于此功能。我试过popToRootViewControllerAnimated,它也不能正常工作,我点击后退按钮后没有任何反应。
    • 嗯,好的,你确实需要一个放松的segue。请参阅此答案作为示例,了解如何操作stackoverflow.com/a/15839298/973153
    • 明天我会试试,因为我已经离开了我的办公室。
    【解决方案3】:

    你需要dismisspresentedviewController:

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

    【讨论】:

    • 我仍然遇到同样的问题,它显示了同样的错误(致命错误:在展开可选值时意外发现 nil self.revealViewController().rearViewRevealWidth = 200)因为当前视图控制器是不是swrevealviewcontroller,我需要回到sw_front,我做不到
    猜你喜欢
    • 2016-02-03
    • 2015-03-19
    • 2015-10-03
    • 2020-11-16
    • 2020-09-05
    • 2015-10-20
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    相关资源
    最近更新 更多