gpt4 book ai didi

swift - 触发显示详细信息 Segue 后主视图 Controller 栏按钮丢失

转载 作者:行者123 更新时间:2023-11-30 10:17:13 24 4
gpt4 key购买 nike

我对 Swift 还很陌生,并且做了一些个人项目来帮助我理解事物。

现在,我使用主从应用程序作为模板。在MasterViewController上,它是一个动态的TableViewController。

我想要实现的是,当我点击任何单元格时,MasterViewController 将显示另一个导航列表(我已设法使用 Push segue 来做到这一点),并且在 DetailViewController 上,而不是调用 DetailViewController ,它当前正在调用 ContentsViewController,它是一个带有 TabBar 的 ViewController(我也使用 Ctrl 单击单元格并使用 Accessory Action -> Show 将其连接起来)。

触发segue的源代码片段

MasterViewController.swift

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showContentDetailSegue" {
if let indexPath = self.tableView.indexPathForSelectedRow() {
performSegueWithIdentifier ("ContentDetailSegue", sender: self)
}
}
}

目前,ContentsViewController 显示没有问题。但是,左上角的 BarButton 不再具有切换 MasterViewController 的 Master BarButton。

我也尝试过 self.presentViewController 但它会取代整个屏幕,这不是我想要的,因为我想保持分割 View 完整。

我哪里出错了?如有任何帮助,我们将不胜感激。

最佳答案

最后,我对你的代码进行了更改。顺便说一句,今天我必须升级到 Xcode 6.3,所以我也必须将您的代码更改为 Swift 1.2(变化不大)。

因此,您的第一个目标是使 DetailsViewController 成为 UITabbar。问题是项目的 Storyboard没有反射(reflect)这一意图。事实上,SplitVC 的第二行不会进入 Tabbar Controller ,但它应该进入。以下是更正后的 Storyboard。

storyboard

第二个问题在 prepareForSegue 。您正在第一个转换内开始第二个转换,事实证明这是正确的。但是,您还需要处理第二个 segue,以便添加 < Back按钮:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

if segue.identifier == "showDetail" {
...
// start second segue
performSegueWithIdentifier ("ContentDetailSegue", sender: self)


} else if segue.identifier == "ContentDetailSegue" {
// add back button
}
}

添加后退按钮有点棘手。由于目标 VC 尚未加载,因此您无法向其导航栏添加后退按钮。它根本不存在(它将在该类的 viewDidLoad() 方法中可用)。

因此,我们将在成员变量中保存一个指向后退按钮的指针,如下所示:

detailsViewController.leftButton = self.splitViewController?.displayModeButtonItem()

并将其安装在 viewDidLoad :

override func viewDidLoad() {
super.viewDidLoad()

if let button = leftButton {
navigationItem.leftBarButtonItem = button
}
}

通过这些修复,一切都可以完美运行。可以找到修改后的代码here

关于swift - 触发显示详细信息 Segue 后主视图 Controller 栏按钮丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29485101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com