gpt4 book ai didi

iOS 在第一次加载时在 UISplitViewController 中选择行

转载 作者:搜寻专家 更新时间:2023-10-31 23:04:48 24 4
gpt4 key购买 nike

我在通用应用程序中设置了一个 UISplitViewController。它大部分工作正常,但我有一个小问题。

iPhone - 仅适用于纵向模式并正确加载 MasterVC(表格 View )iPad - 纵向和横向均可使用

在景观模式下,它会加载屏幕上显示的 MasterVCDetailVC。这很好,我在 MasterVCviewDidAppear 中运行以下代码以选择第一行(如果存在行):

private func selectRowOnFirstLoadIfiPad() {
if self.firstLoad && UIDevice.currentDevice().userInterfaceIdiom == .Pad {
if self.fetchedResultsController.sections?.count != nil {
let rowToSelect:NSIndexPath = NSIndexPath(forRow: 0, inSection: 0);
self.myTableView.selectRowAtIndexPath(rowToSelect, animated: true, scrollPosition:UITableViewScrollPosition.None)
self.performSegueWithIdentifier("mySegue", sender: self)
}
self.firstLoad = !self.firstLoad
}
}

我的问题是,如果用户使用 iPad 纵向启动应用程序。

使用 UISplitViewController iPad 直接进入 DetailVC 并且 MasterVC 上的 viewDidAppear 永远不会运行(直到用户按下返回按钮)。然后 tableView 滑动到屏幕边缘,viewDidAppear 最终运行,将用户带到第一行。

如果他们也以纵向模式启动 iPad,我该如何避免这种情况并立即加载第一行?

谢谢

最佳答案

当您执行 segue 时,我假设您正在加载基于所选单元格的详细 View 。如果是这种情况,请尝试在主视图 Controller 的 viewDidLoad 中的 performSegueWithIdentifier 中发送 NSIndexPath 作为发件人对象。然后在 prepareForSegue() 中,检查发送者对象是否属于 NSIndexPath 类型,因为 Storyboard中的转场将是 UITableViewCell 类。从 NSIndexPath 中获取行并将内容加载到详细 View 中。

然后在 viewDidAppear 中(仍在主视图 Controller 中),选择行初始行,使其突出显示。

func viewDidLoad() {
// ...
var initialIndexPath = NSIndexPath(forRow: 0, inSection: 0)
self.performSegueWithIdentifier("mySegue", sender: initialIndexPath)
}

func viewDidAppear(_ animated: Bool) {
// ...
var initialIndexPath = NSIndexPath(forRow: 0, inSection: 0)
self.myTableView.selectRowAtIndexPath(initialIndexPath, animated: true, scrollPosition:UITableViewScrollPosition.None)
}

func prepareForSegue(_ segue: UIStoryboardSegue, sender sender: AnyObject?) {
// ...
if (sender.isKindOfClass(UITableViewCell) {
// Get row from selected row in tableview
} else if (sender.isKindOfClass(NSIndexPath) {
// Get row from sender, which is an NSIndexPath
} else {
// Handle a default case
}
// Prepare the detail view with the index...
}

关于iOS 在第一次加载时在 UISplitViewController 中选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26795387/

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