Я определил переменную пользовательского класса ShowHideControl
в viewDidLoad()
и хочу вызвать метод в той же переменной при изменении значения шага. Я не уверен, как слушать изменение значения шага в пределах viewDidLoad
.Следите за изменением значения шага и функцией вызова в viewDidLoad - Swift
ViewController.swift:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var player3EquityLbl: UILabel!
@IBAction func stepperChange() {
stepperLabel.text = playerStepper.value.description
}
@IBOutlet weak var player4EquityLbl: UILabel!
@IBOutlet weak var playerStepper: UIStepper!
@IBOutlet weak var stepperLabel: UILabel!
@IBOutlet weak var totalBillLabel: UILabel!
@IBOutlet weak var winnerTxt: UILabel!
@IBOutlet weak var player1txt: UITextField!
@IBOutlet weak var player2txt: UITextField!
@IBOutlet weak var player3txt: UITextField!
@IBOutlet weak var player4txt: UITextField!
@IBOutlet weak var player1EquityLbl: UILabel!
@IBOutlet weak var player2EquityLbl: UILabel!
@IBOutlet weak var player1EquityWord: UILabel!
@IBOutlet weak var player2EquityWord: UILabel!
@IBOutlet weak var player3EquityWord: UILabel!
@IBOutlet weak var player4EquityWord: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var playerTxtArray = [player1txt, player2txt, player3txt, player4txt]
var playerEquityLblArray = [player1EquityLbl, player2EquityLbl, player3EquityLbl, player4EquityLbl]
var playerEquityWordArray = [player1EquityWord,player2EquityWord,player3EquityWord,player4EquityWord]
// initialize text boxes with zero value
var playerBillVlaues = PlayerBillValues(PlayerTextFieldArray: playerTxtArray)
playerStepper.value = 2
var showHideControl = ShowHideControl(lblArray:playerEquityLblArray, lblArray2: playerEquityWordArray, txtArray: playerTxtArray, playerStepper: playerStepper)
showHideControl.showQuantity(2)
Необходимо следить за изменениями шагового (я назвал поддельный функцию здесь, чтобы проиллюстрировать то, что мне нужно делать):
onStepperChange(showHideControl.showQuantity(playerStepper.value))
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
ShowHideControl.swift :
import Foundation
import UIKit
class ShowHideControl {
var txtArray : [UITextField!] = []
var lblArray : [UILabel!] = []
var lblArray2 : [UILabel!] = []
var totalShowing : Int = 0
var playerStepper : UIStepper!
init (lblArray : [UILabel!], lblArray2 : [UILabel!], txtArray: [UITextField!], playerStepper : UIStepper!){
self.lblArray = lblArray
self.lblArray2 = lblArray2
self.txtArray = txtArray
self.playerStepper = playerStepper
showQuantity(2)
}
func showQuantity(let showNumber : Int){
//show the correct number of labels and texts
for var i = 0; i < showNumber-1; ++i {
lblArray[i].hidden = false
lblArray2[i].hidden = false
txtArray[i].hidden = false
}
//hide the others
for var i = showNumber; i < 4; ++i {
lblArray[i].hidden = true
txtArray[i].hidden = true
lblArray2[i].hidden = true
}
}
}
Спасибо, я прочитаю делегатов. Я не совсем понимаю концепцию – chuckieDub
Это способ поднять событие из класса ShowHideControl и прослушать его с вашего ViewController – abinop
Эта строка: 'self.delegate.StepperChanged (playerStepper.value)' в 'ShowHideControl.swift' является ошибка бросания: 'фатальная ошибка: неожиданно найденный nil при распаковке необязательного значения'. Кажется, что делегат вызывается перед загрузкой представления? – chuckieDub