拆分视图控制器转场和连接
Split view controller segue and connections
我正在构建一个应用程序,其中应用程序的一部分应该列出我们镇上的所有商店并显示有关它们的一些详细信息。这部分有效,但它依赖于拆分视图控制器,正如您在这些 pictures 中看到的那样。我还添加了一个问题的视频。
我不知道如何使用拆分视图控制器,真的..所以我做了以下事情:我将拆分视图控制器设置为初始视图控制器,并连接了应该打开的导航控制器首先作为细节视图控制器。 table 视图的第一个导航控制器被设置为主视图控制器。
现在的问题是,当我启动应用程序时,我到达了首页(很好,查看驱动器中的视频),但是在左上角,您可以看到一个导航按钮到 table 视图。有没有办法删除那个按钮,让我的主页导航控制器再次成为初始视图控制器?
我想我必须 link 不同的拆分视图控制器,再次将第一个视图控制器设置为初始视图控制器,并向拆分视图控制器添加一个 segue,但我不知道那 segue 应该是什么样子或者我应该如何编程它。 table 视图的第一个视图控制器现在有一个 segue。
在我的主页视图控制器中,这是现在推送到我的 table 视图的第一个视图控制器的 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 的纵向视图中没有太多 space,所以你需要使用下面的委托方法覆盖它。
func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController:UIViewController, ontoPrimaryViewController primaryViewController:UIViewController) -> Bool {
//handle it efficiently to decide based on certain conditions.
return true
}
试试这个thread,它详细说明了这个问题。
我正在构建一个应用程序,其中应用程序的一部分应该列出我们镇上的所有商店并显示有关它们的一些详细信息。这部分有效,但它依赖于拆分视图控制器,正如您在这些 pictures 中看到的那样。我还添加了一个问题的视频。
我不知道如何使用拆分视图控制器,真的..所以我做了以下事情:我将拆分视图控制器设置为初始视图控制器,并连接了应该打开的导航控制器首先作为细节视图控制器。 table 视图的第一个导航控制器被设置为主视图控制器。
现在的问题是,当我启动应用程序时,我到达了首页(很好,查看驱动器中的视频),但是在左上角,您可以看到一个导航按钮到 table 视图。有没有办法删除那个按钮,让我的主页导航控制器再次成为初始视图控制器?
我想我必须 link 不同的拆分视图控制器,再次将第一个视图控制器设置为初始视图控制器,并向拆分视图控制器添加一个 segue,但我不知道那 segue 应该是什么样子或者我应该如何编程它。 table 视图的第一个视图控制器现在有一个 segue。
在我的主页视图控制器中,这是现在推送到我的 table 视图的第一个视图控制器的 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 的纵向视图中没有太多 space,所以你需要使用下面的委托方法覆盖它。
func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController:UIViewController, ontoPrimaryViewController primaryViewController:UIViewController) -> Bool {
//handle it efficiently to decide based on certain conditions.
return true
}
试试这个thread,它详细说明了这个问题。