【问题标题】:How can I pass a UILabel as a URL in Swift?如何在 Swift 中将 UILabel 作为 URL 传递?
【发布时间】:2021-04-30 21:23:53
【问题描述】:

我有一个名为 itemOneURL 的 UILabel,它从外部数据库读取 URL 并将值作为字符串添加到此标签。我有一个名为viewItemOne(使用工作转场)的单独按钮,一旦选择,它将获取itemOneURL URL 的内容并使用默认浏览器打开此链接。这是我目前正在使用的代码。

@IBOutlet weak var itemOneURL: UILabel!

@IBAction func viewItemOne(_ sender: UIButton) {
    
    let firstURL = itemOneURL as? String
   
    UIApplication.shared.open(URL(string:"\(firstURL)")! as URL, options: [:], completionHandler: nil)
    
}

但是,一旦我在 UI 上选择此按钮,我的应用程序就不会执行任何操作,而当我在其他地方使用以下语法时,它会工作并加载 URL?

UIApplication.shared.open(URL(string:"https://stackoverflow.com")! as URL, options: [:], completionHandler: nil)

是否有什么我做错了导致按钮在选择后无法执行任何操作?

【问题讨论】:

  • 你想要 itemOneUrl.text
  • itemOneUrl 是一个标签,而不是一个字符串。作为?字符串不起作用。

标签: ios swift uikit uilabel


【解决方案1】:

“如何在 Swift 中将 UILabel 作为 URL 传递?”

简短的回答:不要。不要使用视图对象来存储信息。

给你的 viewController 一个属性itemOneURL

重命名您的标签itemOneURLLabel。 (使用 refactor>rename 菜单项,Xcode 将重命名每一个出现,包括故事板或 XIB 文件中的任何出口链接。)

将 didSet 方法添加到您的 itemOneURL 变量:

var itemOneURL: String {
   didSet {
      itemOneURLLabel.text = itemOneURL
   }
}

然后,如果您需要字符串 URL 值,它应该在字符串变量中。问题解决了。

【讨论】:

    猜你喜欢
    • 2017-08-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多