Вот код в структуре.Я добавил «url», но не уверен, правильно ли он добавлен в структуру во всех (3) местах.Цель состоит в том, чтобы добавить «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
}
}
Ниже приведен код массива, который я использую для вашего обзора.Это нужно изменить?или это нормально, как я добавил "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"
Вот код для detailVC, который я хотел бы добавить «UIButton
».В UIButton
я добавил кнопку с main.storyboard
на DetailVC
.Цель состоит в том, чтобы добавить кнопку для открытия URL из массива при нажатии: я не уверен, как правильно закодировать это после добавления UIButton
?
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
}
Воткод для UIViewController
.Я не уверен, что мне нужно добавить дополнительный код к UIViewController
, так как я добавил кнопку в DetailVC?
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
}
}
}