拆分视图控制器 segue 和连接

Posted

技术标签:

【中文标题】拆分视图控制器 segue 和连接【英文标题】:Split view controller segue and connections 【发布时间】:2016-06-06 10:38:58 【问题描述】:

我正在构建一个应用程序,其中应用程序的一部分应列出我们镇上的所有商店并显示有关它们的一些详细信息。这部分有效,但它依赖于拆分视图控制器,正如您在这些 pictures 中看到的那样。我还添加了有关问题的视频。

我真的不知道如何使用拆分视图控制器。所以我做了以下事情:我将拆分视图控制器设置为初始视图控制器,并连接应该首先打开的导航控制器详细视图控制器。表视图的第一个导航控制器被设置为主视图控制器。

现在的问题是,当我启动应用程序时,我到达了主页(这很好,检查驱动器中的视频),但是在左上角,您可以看到有一个导航按钮到表视图。有没有办法删除那个按钮,让我的主页导航控制器再次成为初始视图控制器?

我想我必须以不同的方式链接拆分视图控制器,再次将第一个视图控制器设置为初始视图控制器,并向拆分视图控制器添加一个转场,但我不知道那个转场应该是什么样子或者我应该如何编程。表格视图的第一个视图控制器现在有一个 segue。

在我的主页视图控制器中,这是 segue 现在推送到我的表视图的第一个视图控制器的代码:

func pushRegisterViewShoppen()


    self.performSegueWithIdentifier("SegueShoppen", sender: self)


let shoppen = UIButton(frame: CGRect(x: 0, y: 0, width: 200, height: 200))

        shoppen.setTitle("Shoppen", forState: .Normal)
        shoppen.setTitleColor(UIColor.whiteColor(), forState: .Normal)
        shoppen.addTarget(self, action: #selector(ViewController.pushRegisterViewShoppen),
                          forControlEvents: .TouchUpInside)
        let BergStraatFoto = UIImage.init(named: "Bergstraat")
        shoppen.setBackgroundImage(BergStraatFoto!, forState: .Normal)
        tempView.addSubview(shoppen)

这是 tableViewController 中的 prepareForSegue:

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 
    if segue.identifier == "showDetail" 
        if let indexPath = tableView.indexPathForSelectedRow 
            let winkel: Winkel
            if searchController.active && searchController.searchBar.text != "" 
                winkel = filteredWinkels[indexPath.row]
             else 
                winkel = winkels[indexPath.row]
            

            let controller = (segue.destinationViewController as! UINavigationController).topViewController as! DetailViewController
            controller.detailWinkel = winkel
            controller.navigationItem.leftBarButtonItem = splitViewController?.displayModeButtonItem()
            controller.navigationItem.leftItemsSupplementBackButton = true
            controller.navigationItem.setHidesBackButton(false, animated: true)

        
    

有谁知道我该如何解决这个问题?提前致谢!

【问题讨论】:

我想你需要清楚地了解 UISplitViewController 在 iPhone 上是如何工作的。有UITableView的首页导航页是master吧? 是的,我真的不知道它是如何工作的...确实,那个是大师,我更新了驱动器中的图片,它们现在显示了哪个是大师、细节、关系和 ShoppenSegue 你应该阻止默认选择发生 Roisers 请查看答案已更新代码。 【参考方案1】:

试试这个 UISplitViewController 的委托方法,详细视图控制器会显示出来,因为 iPhone 的纵向视图中没有太多空间,所以你需要使用下面的委托方法覆盖它。

func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController:UIViewController, ontoPrimaryViewController primaryViewController:UIViewController) -> Bool 
//handle it efficiently to decide based on certain conditions.        
return true

试试这个thread,它更详细地说明了这个问题。

【讨论】:

以上是关于拆分视图控制器 segue 和连接的主要内容,如果未能解决你的问题,请参考以下文章

ios 如何从单视图 Segue 到拆分视图控制器

XCODE:2 个视图控制器连接一个 segue 和 2 个 Uilabels 数据

UITableView推送segue多次触发

拆分视图控制器仅显示一个视图(Xcode 6)

在 iOS 拆分视图控制器上推送新的视图控制器

Xcode Swift 3:计时器和 Segue 视图控制器错误