Я создаю приложение для iOS с двумя ViewControllers, первое из которых StartViewController.swift , второе ViewController.swift .
StartViewController показывает количество9 кнопок UIB, каждому из которых я назначил отдельный тег в инспекторе атрибутов XCode, а именно целые числа от 0 до 8.
Каждая кнопка представляет некоторую тему, о которой пользователь хотел бы узнать больше.Соответственно, в моем проекте есть еще один файл, в котором я создал массив заголовков и соответствующих текстов, представляющих соответствующую информацию, которую я хочу показать пользователю.Второй VC (ViewController.swift) имеет 2 UILabels, которые показывают заголовок и текст соответственно.
Короче говоря, я хочу взять тег кнопки (Int) и использовать ist для вывода информации о теме с соответствующим индексомв моем массиве.
Я подключил оба VC с UIStoryboardSegue, который я назвал startToTopicSegue .Затем я реализовал метод prepare (для segue:) и настроил кнопки.С помощью операторов печати я подтвердил, что 1) sender.tag в StartViewController.swift действительно является тегом нажатой кнопки, и 2) что переменная tagPassedOver устанавливает заголовок и текстовые метки в ViewController.swift, как и должно быть.
Но на tagPassedOver совсем не влияет то, что я указал в viewDidLoad (), вместо этого он сохраняет значение init 0 - как мне это изменить?
У меня сильное чувство, что оно что-то имеетделать со спецификацией отправителя в первом VC, но сейчас я как бы теряюсь в переводе, поэтому любая помощь будет оценена;) - спасибо!
StartViewController.swift
@IBAction func buttonPressed(_ sender: UIButton) {
print(sender.tag)
performSegue(withIdentifier: "startToTopicSegue", sender: UIButton.self)
}
func prepare(for segue: UIStoryboardSegue, sender: AnyObject) {
if segue.identifier == "startToTopicSegue"{
let destinationVC = segue.destination as! ViewController
destinationVC.tagPassedOver = sender.tag
}
}
ViewController.swift
var tagPassedOver : Int = 0
@IBOutlet weak var headingLabel: UILabel!
@IBOutlet weak var textLabel: UILabel!
override func viewDidLoad() {
headingLabel.text = allTopics.list[tagPassedOver].topicHeading
textLabel.text = allTopics.list[tagPassedOver].topicText