我正在为我的应用创建条形码阅读器。我把它钉了下来,但是如果它对它读取的条形码没有任何意义,那就没用了。接下来我要做的是在函数捕获代码后立即启动一个新的View Controller。
问题是:如果满足此IF,我该如何生成新的视图控制器?
if metadataObj.stringValue != nil
{
messageLabel.text = metadataObj.stringValue
}
这是打印(在用户面前)条形码的数字形式(因此当用户将其相机指向条形码时,显示4058394759)。接下来,我希望应用移动到新的视图控制器,在该控制器中打印该数值,并创建一个按钮,生成谷歌搜索。
事情是,我只使用Interface Builder连接了视图控制器。如何通过代码进行转换?
答案 0 :(得分:0)
您应该检查评论中提供的链接,以便了解其工作原理。有很多方法可以做到这一点,我只会展示一个(有和没有特殊的初始化器):
if metadataObj.stringValue != nil
{
messageLabel.text = metadataObj.stringValue
let vc = yourViewController(initValue: metadataObj.stringValue!)
self.navigationController?.push(vc, animated: true)
}
您也可以呈现,而不是推送您的viewController。您也可以在不使用navigationController的情况下执行此操作。这些选项中的每一个都会产生影响,这就是为什么要求您检查链接以便了解您的选择的原因。
我假设您的视图控制器有一个特殊编写的init来初始化您需要的数据。如果不是这种情况,那么只需将值分配给您在目标视图控制器中定义的属性,然后再显示/推送它:
if metadataObj.stringValue != nil
{
messageLabel.text = metadataObj.stringValue
let vc = yourViewController()
vc.somePropertyYouDefined = metadataObj.stringValue!
self.navigationController?.push(vc, animated: true)
}