Ios “如何修复”;结构";单击打开url时是否包含UIButton?

Ios “如何修复”;结构";单击打开url时是否包含UIButton?,ios,arrays,swift,xcode,struct,Ios,Arrays,Swift,Xcode,Struct,下面是结构中的代码。我已经添加了“url”,但不确定是否在所有(3)个位置正确添加到结构中。目标是将“URL”添加到结构中 下面是我用于您审阅的数组的代码。需要改变吗?或者我添加“url”的方式可以吗?这里的目标是将“URL”添加到数组中 下面是我想添加一个“UIButton”的detailVC的代码。在ui按钮中,我将main.storyboard中的按钮添加到DetailVC。这里的目标是添加一个按钮以在单击时打开数组中的URL:我不确定在添加UIButton后如何正确编码 以下是UIVie

下面是结构中的代码。我已经添加了“url”,但不确定是否在所有(3)个位置正确添加到结构中。目标是将“URL”添加到结构中

下面是我用于您审阅的数组的代码。需要改变吗?或者我添加“url”的方式可以吗?这里的目标是将“URL”添加到数组中

下面是我想添加一个“
UIButton
”的detailVC的代码。在
ui按钮中,我将
main.storyboard
中的按钮添加到
DetailVC
。这里的目标是添加一个按钮以在单击时打开数组中的URL:我不确定在添加
UIButton
后如何正确编码

以下是
UIViewController
的代码。我不确定是否需要向
UIViewController
添加其他代码,因为我向DetailVC添加了一个按钮


我找到了在单击按钮时从数组中打开url的解决方案。我实施了以下措施:

@iAction func WatchButton已映射(uu发送方:SAButton){
如果让url=url(字符串:self.state!.url){

UIApplication.shared.open(url,选项:[:],completionHandler:nil)

我找到了在单击按钮时从数组中打开url的解决方案。我实现了以下功能:

@iAction func WatchButton已映射(uu发送方:SAButton){
如果让url=url(字符串:self.state!.url){

UIApplication.shared.open(url,选项:[:],completionHandler:nil)

请详细说明。哪个数组?哪个按钮?因此您想打开
状态
数组中最后一个对象的URL,对吗?在状态数组中如果您有10个状态,那么您想在视图控制器中创建10个按钮吗?然后当点击一个按钮时,您想在浏览器中打开相应的URL吗?数组中的每个项目都有一个URL作为参考与之关联。数组填充UITableView,其中每个单元格都有来自数组的状态名称。当从TableView中选择单元格时,它将移动到详细信息VC以查看有关状态的更多信息。在详细信息VC上,有2个标签、一个textview和一个按钮。该按钮是用户要单击以查看该单元格的url的按钮状态。请详细说明。哪个数组?哪个按钮?所以你想打开
状态
数组中最后一个对象的URL,对吗?在状态数组中如果你有10个状态,那么你想在视图控制器中创建10个按钮吗?然后当点击一个按钮时,你想在浏览器中打开相应的URL吗?数组中的每个项目都有一个关联的URL该数组填充一个UITableView,其中每个单元格都有一个来自该数组的状态名称。当从TableView中选择一个单元格时,它将移动到详细信息VC以查看有关该状态的更多信息。在详细信息VC上,有两个标签、一个textview和一个按钮。该按钮是用户要单击以查看该状态的url的按钮.
struct State{

var title: String
var detailText: String
var description: String
var image: UIImage
var document: String
var url: String

 init(titled: String, detailText: String, imageName: String,     description: String, document: String, url: String)
{
self.title = titled
self.detailText = detailText
self.description = description
self.image = UIImage(named: imageName) ?? UIImage(named:"default")!
self.document = document
self.url = url
  }
}
class SelectedState{
// variables
var name: String // Name of State.
var states: [State] // List of all States.

init(named: String,includeStates: [State]){
    name = named
    states = includeStates
}
class func getSelectedStates() -> [SelectedState]{
    return [self.Reciprocal(), self.Unilateral(), self.NoAgreement(), self.ConstitutionalCarry()]
}
// Mark: - Private Helper Methods.
private class func Reciprocal() -> SelectedState {
    // Add states that are reciprocal states.
    var states = [State]()

    states.append(State(titled: "Alabama", detailText: "Reciprocal State", imageName: "alabama", description: "some text here", document: "somePDF", **url**: "https://www.anything.com"

    states.append(State(titled: "Texas", detailText: "Reciprocal State", imageName: "texas", description: "some text here", document: "somePDF", **url:** "https://www.somethingelse.com"
class StateDetailViewController: UIViewController, SFSafariViewControllerDelegate, UITextViewDelegate {

@IBOutlet weak var stateTitleTextLabel: UILabel!
@IBOutlet weak var stateDetailTextTitleLabel: UILabel!
@IBOutlet weak var stateDescriptionTextView: UITextView!
@IBOutlet weak var openURL: UIButton!

var state: State?

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.

    title = "Reciprocal Details"

    stateTitleTextLabel.text = state?.title
    stateDetailTextTitleLabel.text = state?.detailText
    stateDescriptionTextView.text = state?.description
 }
import SafariServices
import UIKit
class StatesTableViewController: UITableViewController {
// Mark: - Data Model
  var selectedStates: [SelectedState] =          SelectedState.getSelectedStates()

override func viewDidLoad() {
    super.viewDidLoad()

    title = "Reciprocity Agreements"
}
// MARK: - Table view data source

override func numberOfSections(in tableView: UITableView) -> Int {
    return selectedStates.count
}
 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete implementation, return the number of rows
    return selectedStates[section].states.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "stateCell", for: indexPath) as! StatesTableViewCell

    // Configure the cell...
    let selectedState = selectedStates[indexPath.section]
    let states = selectedState.states
    let state = states[indexPath.row]
    cell.state = state
    return cell
}
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
    let selectedState = selectedStates[section]
    return selectedState.name
}

var youselectedState: State?

 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let selectedState = selectedStates[indexPath.section]
    let state = selectedState.states[indexPath.row]
    youselectedState = state

    performSegue(withIdentifier: "AgreementDetails", sender: nil)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "AgreementDetails"{
        let StateDetailVC = segue.destination as!   StateDetailViewController
        StateDetailVC.state = youselectedState
     }
   }
 }