当前位置: 首页 > 面试题库 >

在Swift中以编程方式制作Segue

宋嘉懿
2023-03-14
问题内容

我有两个VC:VC1和VC2。在VC1中,我有一个finish button以编程方式制作的,并且result array我想传递给VC2。

我知道如何在情节提要中制作Segue,但由于这finish button是通过编程方式制作的,因此目前我不能这样做。

如果我想使用segue传递结果数组,是否有办法以编程方式进行segue?如果这不可能,我是否应该只使用VC2
presentViewController并设置一个委托来传递result array


问题答案:

您可以像在此答案中建议的那样进行操作:
InstantiateViewControllerWithIdentifier。

此外,由于链接中的答案最初是用Objective-C编写的,因此我为您提供了用Swift重写的链接答案中的代码。

let vc = UIStoryboard(name:"Main", bundle:nil).instantiateViewController(withIdentifier: "identifier") as! SecondViewController

vc.resultsArray = self.resultsArray

编辑:

由于此答案引起了一定的关注,我想我为您提供了另一种更安全的方法。在上述答案中,如果ViewControllerwith “ identifier”
不是type,则应用程序将崩溃SecondViewController。在Swift中,您可以通过使用可选绑定来防止此崩溃:

guard let vc = UIStoryboard(name:"Main", bundle:nil).instantiateViewControllerWithIdentifier("identifier") as? SecondViewController else {
    print("Could not instantiate view controller with identifier of type SecondViewController")
    return
}

vc.resultsArray = self.resultsArray
self.navigationController?.pushViewController(vc, animated:true)

ViewController如果类型为,则以这种方式推送SecondViewController。如果无法转换SecondViewController为消息,则会打印一条消息,并且应用程序将保持当前状态ViewController



 类似资料:
  • 问题内容: 我尝试以编程方式实现UITableView,而不使用xib或Storyboards。这是我的代码: ViewController.swift MyTableViewController.swift 但是当我运行应用程序时,我得到的只是空表。在日志中,我看到了和的几行,但没有。如何修复此代码以获取包含6行文本的表格? 问题答案: 注意: 正如您提到的,您刚刚开始在中进行编程。我以编程方式

  • 问题内容: 我正在尝试为自己创建一个自定义单元,但是遇到了一些困难。 首先,我无法使用InterfaceBuilder,因为我正在Xcode中对该bug进行变体。每次我在Interface Builder中单击一个元素时,该视图中的所有内容的高度和宽度均为零,并在视图外部重新定位。此外,我想学习如何以编程方式执行此操作。 其次,我在项目中使用Swift语言。我一直在尝试遵循此演示,并尽最大努力将O

  • 问题内容: 我正在尝试以编程方式构建UI。如何使该动作起作用?我正在用Swift开发。 viewDidLoad中的代码: 问题答案: 您只是在选择器名称的末尾缺少冒号。因为按下需要一个参数,所以冒号必须在该位置。而且,您按下的函数不应嵌套在viewDidLoad中。 编辑:更新以反映Swift 2.2中的最佳实践。应该使用#selector()而不是不推荐使用的文字字符串。

  • 问题内容: 我看到了一些示例代码,它们将相同的OnClick事件分配给Android中的所有按钮(即使它们执行的动作完全不同)。如何用Swift做 Android示例: 注意:我不想以编程方式创建按钮。 问题答案: 在iOS上,您没有设置监听器;你添加一个目标(物体)和行动(方法签名,在iOS的说法“选择”)将(这是一个子类): 在这种情况下,第一个参数是目标对象。该操作是一个选择器(方法签名),

  • 问题内容: 我已经搜索了其他问题,但是似乎仍然无法在swift 3中使用自动布局以编程方式创建我的scrollView。我可以使我的scrollview出现,如下图所示,但是当我滚动到底部时,其他标签可以显示不会显示,并且“滚动顶部”标签不会消失。 希望有人可以帮助您在下面查看我的代码! 问题答案: 使用约束定义滚动内容大小很容易-因此您不必进行任何手动计算。 只记得: 滚动视图的 内容元素 必须

  • 问题内容: 我正在尝试通过按“感觉幸运”按钮切换到第二个视图。当我尝试模拟器并按下它时,它只会显示黑屏。我该如何解决? 问题答案: 您可以通过控制从第一个场景顶部的视图控制器图标拖动到第二个场景来在情节提要中的两个场景之间添加序列: 然后,您可以选择该segue并为其指定一个唯一的情节提要标识符,然后可以使用该标识符执行segue: 或者,您可以执行以下操作: 其中“第二个”是我在Interfac