- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
设置:在 Xcode 中创建样板 iOS Master-Detail 应用程序并运行它。每次您单击主项目时,它都会重新创建detailVC并将其配置为显示新数据。
前提:这通常是我想要的,但其他时候它只不过是更改单个标签中的文本。重用现有的 DetailVC 不是更有意义吗? (至少在这种情况下)
那么最好的方法是什么?
思考:当我查看样板代码时,我看到MasterVC为detailVC创建了类范围的var。
var detailViewController: DetailViewController? = nil
它在 viewDidLoad
中设置该值,但之后它不会将其用于任何用途。啊?在 prepare(for:sender:)
中,我们得到了这段代码
let controller = (segue.destination as! UINavigationController).topViewController as! DetailViewController
它创建 DetailViewController
的新实例。如果您在创建后放置一个断点并将其与类 var detailViewController
进行比较,您会发现它们是不同的。
UIStoryboardSegue
正在创建我的新 DetailViewController
,可以通过查看文档轻松确认。
You do not create segue objects directly. Instead, the storyboard runtime creates them when it must perform a segue between two view controllers.
我可以删除行选择上的segue并手动调用detailVC上的方法,这可能是最简单的,但是segues在IB中是如此纯粹和直观。我也许可以创建一个自定义的转场。我还能做什么?有明确的“最佳”方法吗?
最佳答案
如果其他人有这个问题,这是我的解决方案,直到有人提出更好的解决方案。
转到 Interface Builder 并删除从主 TableView 到DetailVC 的showDetail
segue。然后进入 MasterViewController 类并删除 prepare(for:sender:)
函数。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showDetail" {
if let indexPath = tableView.indexPathForSelectedRow {
let object = objects[indexPath.row] as! NSDate
let controller = (segue.destination as! UINavigationController).topViewController as! DetailViewController
controller.detailItem = object
controller.navigationItem.leftBarButtonItem = splitViewController?.displayModeButtonItem
controller.navigationItem.leftItemsSupplementBackButton = true
}
}
}
在Table View区域创建一个新函数(这个新函数是UITableViewDelegate
的一部分)
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
detailViewController?.detailItem = object
}
关于ios - UISplitViewController,重用DetailViewController(Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49517807/
首先,我使用 Storyboard。我的 ViewController 层次结构如下 NavigationController -> SplashScreen -> LoginScreen -> Ma
我有一个 UISplitview Controller (带有主视图和详细 View )。所以,当 detailview加载 viewDidLoad调用名为 [self animateToPositi
好的,所以我有一个主详细信息应用程序,当用户单击某个单元格时,它会在 DetailViewController 中加载网页。问题是,在 iPhone 版本(这是一个通用应用程序)上,我必须单击单元格,
我做了一个 MasterDetailView 应用程序。在 TableView 中,我有员工列表,在 detailView 中,我有一个欢迎屏幕,其中包含员工详细信息和其他详细信息。当我点击任何员工时
我创建了一个 NavigationBar 和 DetailView,但是当我在 tableView 上选择一行时,没有设置 DetailView 的标题。如何设置? 谢谢! 最佳答案 如果您在 UIN
我正在为一个主从应用程序使用苹果模板,我想知道:如果我在 iPad 或任何其他具有常规水平尺寸类的设备上显示内容。当我打开 MasterViewController 时,DetailViewContr
我的代码没有错误,但是细节 Viewcontroller 上的数组没有接收到我通过 segue 发送给它的对象。我知道我的数组充满了对象,因为我可以将它们打印到日志中.我可以在准备转场之前对它们进行计
我有一个 UITableview,我用数据库中的数据填充了它,我知道将什么数据发送到另一个 View (detailViewController),但是我无法让它工作,现在我正在通过 - (void)
我有一个主 TableView 和一个详细 View 。当我单击单元格详细信息 View 时,应显示该项目的详细信息。现在我想做的是创建 subview 并将该 subview 放入详细 View 中
我正在使用 UISplitViewController 开发 iPad 应用程序。我还使用 DetailViewController 在其中显示一些来自 XML 的信息,但是这些信息没有显示在 Det
我很难选择显示为 Split View Controller 中的详细 View 的 View Controller 。似乎在 showDetail 后面有一些 View Controller 的默认
我已经查看了互联网上的每个答案,但它一直给出错误。我知道这可能会重复,但解决方案对我不起作用。 我已将 detailViewController 设为公共(public)类 我添加了 detailVi
我开始使用 Storyboard,但注意到一个非常显着的区别:每次我来回导航时, Storyboard似乎都会实例化一个新的 ViewController。示例:我基于 Master-Detail 模
我正在尝试创建一个 iPad 应用程序,其用户界面与 Apple 的邮件应用程序类似,即: RootView Controller ( TableView )位于 Split View的左侧,用于通过
我正在 iPad 上开发这个应用程序。我的 MainWindow 包含一个 Split View Controller ,它加载 RootViewController 和 DetailViewCont
目前,我有一个带有 MasterViewController 和 DetailViewController 的 SplitViewController。我想知道是否有办法拥有更多 DetailView
因此,使用下面的代码,我将我的 CollectionViewCell indexPath 插入到新的 DetailViewController 中。现在每个“DetailViewController”
我正在尝试创建一个 master-DetailView 应用程序,但目前我陷入困境,我正在尝试为我的数据创建模板。例如,我想要一个数组来手动控制数据(例如标签/图像)并通过索引路径进行更改,因此每个单
我正在我的应用程序中实现 SplitViewController。我的问题是,当我在较小的设备(例如 iphone5)上显示此内容时,我的 SplitViewController 的 masterVi
这个问题已经有答案了: Passing data between view controllers (44 个回答) 已关闭 4 年前。 我的模型中有一个名为 的字典 var detailStock:
我是一名优秀的程序员,十分优秀!