【问题标题】:Multiple DetailViewControllers using a UISplitViewController使用 UISplitViewController 的多个 DetailViewController
【发布时间】:2015-10-14 16:02:59
【问题描述】:

目前,我有一个带有 MasterViewController 和 DetailViewController 的 SplitViewController。我想知道是否有办法拥有更多的 DetailViewControllers。现在,我在左侧的 tableView 中有一个项目列表,如果单击它们,它们将进入全屏视图。当我点击它时,如何让它显示在拆分视图右侧的面板内?所以参考这张图片 - 我怎样才能让我的视图在细节部分显示为黄色?现在当我点击我的“黄色”时 - 黄色全屏显示,而不是细节。 http://2uagoo1zzsoo4bcz3347bs2y.wpengine.netdna-cdn.com/wp-content/uploads/2012/08/Image003.png

额外信息:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    if indexPath.row == 0 {

        let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

        let vc: UINavigationController = storyboard.instantiateViewControllerWithIdentifier("newViewController") as! UINavigationController

        self.presentViewController (vc, animated: true, completion: nil)

    } else if indexPath.row == 3 {

        let storyboardTwo: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

        let vcTwo: UINavigationController = storyboardTwo.instantiateViewControllerWithIdentifier("newViewController4") as! UINavigationController

        self.presentViewController(vcTwo, animated: true, completion: nil)
    }

【问题讨论】:

  • 我不太明白你的问题,我做过一个类似的项目,但我不太明白你想问什么。
  • 现在,如果我单击左侧窗格项目(颜色名称),它会打开一个新视图。我希望它在详细视图中显示在它旁边。不在单独的视图中。更清晰? :)

标签: ios swift uisplitviewcontroller master-detail


【解决方案1】:

相信你需要使用 show showDetailViewController 方法:

将指定的视图控制器呈现为拆分视图界面的辅助视图控制器。

func showDetailViewController(_ vc: UIViewController,
                   sender sender: AnyObject?)

所以在你的情况下,它会更像这样使用。在 didSelectRowAtIndexPath 函数中:

{
    let vc:UIViewController
    if indexPath.row == 0 {
        let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        vc: UINavigationController = storyboard.instantiateViewControllerWithIdentifier("newViewController") as! UINavigationController   



    } else if indexPath.row == 3 {
        let storyboardTwo: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
       vc: UINavigationController = storyboardTwo.instantiateViewControllerWithIdentifier("newViewController4") as! UINavigationController

    }else {
     // handle this case
        vc = ...
    }
    // Grab the Split View Controller 
    let splitVC = // get Split View Controller
    splitVC.showDetailViewController(vc,sender:nil)
}

【讨论】:

  • 嘿,谢谢。那么如何在点击单元格后触发此功能?请您参考我上面的代码再解释一下好吗? :D
  • 如果我理解正确,而不是呈现视图控制器,获取拆分视图控制器并让它调用此方法,如下所示: splitVC.showDetailViewController(vcTwo, sender:nil)
  • 非常感谢.. 和 vcTwo?我必须改变它吗? :)
  • 抱歉 Jbryson,非常感谢您的帮助 - 我是新手。我认为这是非常错误的: override func showDetailViewController(vc: GreetingsTableViewController, sender: AnyObject?) { let vcTwo: UINavigationController = storyboard?.instantiateViewControllerWithIdentifier("newViewController") as! UINavigationController GreetingsTableViewController.showDetailViewController(vcTwo, sender:nil) }
  • 完成。非常非常感谢jbryson!! :D 希望有一天我能帮助你哈哈
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 1970-01-01
  • 2014-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多