gpt4 book ai didi

ios - 如何从动态创建的 Storyboard属性为 nil 的 UIViewController 中执行 SegueWithIdentifier()

转载 作者:搜寻专家 更新时间:2023-11-01 07:23:54 28 4
gpt4 key购买 nike

我正在开发一个具有搜索功能的项目。我有 3 个 View Controller ,即 HomeViewController、SearchResultViewController 和 DetailViewController。

在主页上,我在导航栏中有一个搜索栏(使用 UISearchController )以及一些虚拟内容。这里重要的是我使用单独的 Controller (在我的例子中是 SearchResultController)来显示结果。这个 SearchResultController 实际上是 TableViewController 的子类,它在 tableview 中显示结果。到这里为止一切正常。

问题

现在,当我从结果中选择任何行时(即在 SearchResultViewController 中),我想打开另一个 View Controller (DetailViewController),我将在其中显示有关该所选项目的详细信息。这是一件非常简单的事情,但我被困在这里。

好的,继续我已经实现了 didSelectRowAtIndexPath 方法的问题,并且我正在调用 performSegueWithIdentifier 并且我收到错误“Receiver has no segue with identifier”,因为 storyboard 属性为 nil (它在文档中提到)。

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
print("storyboard property is \(self.storyboard)")
performSegueWithIdentifier(segueIdentifier, sender: indexPath.row)
}

注意:segueIdentifier 与 Storyboard上的相同。我得到 Storyboard属性为零。

我猜

当我点击搜索栏时,iOS 会在内部创建并加载 SearchResultController 的实例以显示结果,因此它的 Storyboard属性为 nil,因此我会收到上述错误。

有人可以解决这个问题或任何指向正确方向的指示。

最佳答案

如果您以编程方式创建 View Controller ,那么您应该像这样推送导航 Controller ,

  UIViewController *vc = [[UIViewController alloc]init]; //your viewcontroller here

[self.navigationController pushViewController:vc animated:YES];

//or if you want to present it then

[self presentViewController:vc animated:YES completion:nil];

你不能执行 segue,因为没有 Storyboard就没有 segue

在 swift 中是这样的

 let vc: UIViewController = UIViewController()
//your viewcontroller here
self.navigationController!.pushViewController(vc, animated: true)
//or if you want to present it then
self.presentViewController(vc, animated: true, completion: { _ in })

避免在swift中出现任何错误!!!

希望这会有所帮助:)

关于ios - 如何从动态创建的 Storyboard属性为 nil 的 UIViewController 中执行 SegueWithIdentifier(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37209610/

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