Я пытаюсь показать некоторые данные в LastVC в зависимости от выбора пользователя в каждом представлении. Я Пусть вам образ нашего AppNSNotificationCenter. Отправлять данные от одного к другому ViewControllers Swift
Я использую NSNotificationCenter, но метки в lastVC не меняются.
Что не так?
@IBOutlet слабый цвет varLabelSelected: UILabel!
@IBOutlet weak var nextOutlet: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
nextOutlet.hidden = true
}
@IBAction func greenButton(sender: AnyObject) {
NSNotificationCenter.defaultCenter().postNotificationName("setGreenColorID", object: nil)
colorLabelSelected.text = "You have selected a green BG color"
nextOutlet.hidden = false
}
@IBAction func blueButton(sender: AnyObject) {
NSNotificationCenter.defaultCenter().postNotificationName("setGreenColorID", object: nil)
colorLabelSelected.text = "You have selected a blue BG color"
nextOutlet.hidden = false
}
@IBAction func pinkButton(sender: AnyObject) {
NSNotificationCenter.defaultCenter().postNotificationName("setGreenColorID", object: nil)
colorLabelSelected.text = "You have selected a pink BG color"
nextOutlet.hidden = false
}
}
Класс ViewController2: UIViewController {
@IBOutlet weak var nextOutlet: UIButton!
@IBOutlet weak var titleLabelSelected: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
nextOutlet.hidden = true
}
@IBAction func newsButton(sender: AnyObject) {
NSNotificationCenter.defaultCenter().postNotificationName("setNewsThemeID", object: nil)
titleLabelSelected.text = "You have selected News as title"
nextOutlet.hidden = false
}
@IBAction func sportButton(sender: AnyObject) {
NSNotificationCenter.defaultCenter().postNotificationName("setSportThemeID", object: nil)
titleLabelSelected.text = "You have selected Sport as title"
nextOutlet.hidden = false
}
@IBAction func wealthButton(sender: AnyObject) {
NSNotificationCenter.defaultCenter().postNotificationName("setWealthThemeID", object: nil)
titleLabelSelected.text = "You have selected Wealth as title"
nextOutlet.hidden = false
}
}
То же самое с VC3
Класс lastViewController: UIViewController {
@IBOutlet weak var finalColorLabel: UILabel!
@IBOutlet weak var finalThemeLabel: UILabel!
@IBOutlet weak var finalRelevanceLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: "setBlueColor:", name: "setBlueColorID", object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "setGreenColor:", name: "setGreenColorID", object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "setPinkColor:", name: "setPinkColorID", object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "setNewsTheme:", name: "setNewsThemeID", object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "setSportTheme:", name: "setSportThemeID", object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "setWealthTheme:", name: "setWealthThemeID", object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "setTenPoints:", name: "setTenPointsID", object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "setSevenPoints:", name: "setSevenPointsID", object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "setFivePoints:", name: "setFivePointsID", object: nil)
}
//setColors
func setBlueColor(notification: NSNotification) {
finalColorLabel.text = "blue"
}
func setGreenColor(notification: NSNotification) {
finalColorLabel.text = "green"
}
func setPinkColor(notification: NSNotification) {
finalColorLabel.text = "pink"
}
//setTheme
func setNewsTheme(notification: NSNotification) {
finalThemeLabel.text = "news"
}
func setSportTheme(notification: NSNotification) {
finalThemeLabel.text = "sport"
}
func setWealthTheme(notification: NSNotification) {
finalThemeLabel.text = "wealth"
}
//setRelevance
func setTenPoints(notification: NSNotification){
finalRelevanceLabel.text = "ten"
}
func setSevenPoints(notification: NSNotification){
finalRelevanceLabel.text = "seven"
}
func setFivePoints(notification: NSNotification){
finalRelevanceLabel.text = "five"
}
Что, если мы хотим передать что-то более чем одному Vc? – FactorJose
В этом случае вам, вероятно, придется разделить свой код на правильный MVC. Создайте userSettingsModel (должен быть класс, а не тип значения, например struct) и передать указатель при переходе на ViewController. Контроллер просмотра обновит модель любым пользователем, и все. – 66o