【问题标题】:How can I call an array of URLs in an @IBAction?如何在 @IBAction 中调用 URL 数组?
【发布时间】:2023-03-07 22:29:01
【问题描述】:

Swift 新手 - 慢慢但肯定会开始完全理解这一点。

如何在@IBAction 中调用结构化的 URL 数组 weeks.urls[0]?我附上了错误的屏幕截图,以及我的 WeekDetalViewController 代码。


class WeekDetailViewController: UIViewController {

    var week: WeekInfo!


    @IBOutlet weak var lessonCompleteBtn: UIButton!
    @IBOutlet weak var Button1: UIButton!
    @IBOutlet weak var Button2: UIButton!
    @IBOutlet weak var Button3: UIButton!
    @IBOutlet weak var Button4: UIButton!


    override func viewDidLoad() {
        super.viewDidLoad()


        lessonCompleteBtn.backgroundColor = UIColor.gray
        lessonCompleteBtn.layer.cornerRadius = 20

    }
    @IBAction func lessonBtnTapped(_ sender: AnyObject) {
        sender.setTitle("PSET Complete!", for: [])
        if lessonCompleteBtn.backgroundColor == UIColor.gray{
            lessonCompleteBtn.backgroundColor = UIColor(red: 17/255, green: 107/255, blue: 0/255, alpha: 1.0)
        }
        else if lessonCompleteBtn.backgroundColor == UIColor(red: 17/255, green: 107/255, blue: 0/255, alpha: 1.0){
            sender.setTitle("Complete PSET!", for: [])
            lessonCompleteBtn.backgroundColor = UIColor.gray
        }
    }

    @IBAction func Button1(_ sender: Any) {
        UIApplication.shared.open(URL(week.urls[0])!)

    }
    @IBAction func Button2(_ sender: Any) {
        UIApplication.shared.open(URL(week.urls[1])!)
    }
    @IBAction func Button3(_ sender: Any) {
        UIApplication.shared.open(URL(week.urls[2])!)
    }
    @IBAction func Button4(_ sender: Any) {
       UIApplication.shared.open(URL(week.urls[3])!)
    }


    }```



【问题讨论】:

  • 为什么要强制拆包?删除! 符号
  • week.urls 中有什么内容?
  • 当我删除 week.urls 时,我在 week.urls 中收到错误“Missing argument label 'resolvingAliasFileAt:' in call”我有以下设置:struct WeekInfo { let description: String let urls: [URL] } class WeekTableViewController: UITableViewController { var week = [ WeekInfo(description: "Week 0", urls: [ URL(string: "https://website1.com")!, URL(string: "https://website2.com")!, URL(string: "https://website3.com")!, URL(string: "https://website4.com")!]),

标签: ios arrays swift xcode ibaction


【解决方案1】:

移除强制展开,你就可以开始了。

@IBAction func Button1(_ sender: Any) {
    UIApplication.shared.open(week.urls[0])

}
@IBAction func Button2(_ sender: Any) {
    UIApplication.shared.open(week.urls[1])
}
@IBAction func Button3(_ sender: Any) {
    UIApplication.shared.open(week.urls[2])
}
@IBAction func Button4(_ sender: Any) {
   UIApplication.shared.open(week.urls[3])
}

假设urls[URL]

【讨论】:

  • 我已经更新了我的答案。没有删除再次初始化 URL 部分是我的错误。
【解决方案2】:

你去......你的数组中已经有 URL......所以不需要再次创建它们......而且它们不是可选的......所以你不需要使用强制解包

 @IBAction func Button1(_ sender: Any) {
        UIApplication.shared.open(week.urls[0])

    }
    @IBAction func Button2(_ sender: Any) {
        UIApplication.shared.open((week.urls[1])
    }
    @IBAction func Button3(_ sender: Any) {
        UIApplication.shared.open(week.urls[2])
    }
    @IBAction func Button4(_ sender: Any) {
       UIApplication.shared.open(week.urls[3])
    }

最好使用一个功能而不是4个...只需设置按钮标签

 @IBAction func ButtonTapped(_ sender: UIButton) {
            UIApplication.shared.open(week.urls[sender.tag])

        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-01
    相关资源
    最近更新 更多