Использовать функцию из одного класса в другом классе в Swift
Итак, скажем, у меня есть класс под названием Math
class Math{
func add(numberOne: Int, numberTwo: Int) -> Int{
var answer: Int = numberOne + numberTwo
return answer
}
В этом классе есть функция, которая позволяет пользователю добавлять два числа.
Теперь у меня есть еще один класс, который является подклассом UIViewController, и я хочу использовать функцию add из класса Math, как это сделать?
class myViewController: UIViewController{
//Math.add()???
}
Ответы
Ответ 1
Если вы хотите сказать Math.add(...)
, вам нужно использовать метод класса - просто добавьте class
до func
:
class Math{
class func add(numberOne: Int, numberTwo: Int) -> Int{
var answer: Int = numberOne + numberTwo
return answer
}
}
Затем вы можете вызвать его из другого класса Swift следующим образом:
Math.add(40, numberTwo: 2)
Чтобы назначить его переменной i
:
let i = Math.add(40, numberTwo: 2) // -> 42
Ответ 2
Используйте ключевое слово class
перед add
, чтобы сделать его функцией класса.
Вы можете использовать
class Math{
class func add(numberOne: Int, numberTwo: Int) -> Int{
var answer: Int = numberOne + numberTwo
return answer
}
}
class myViewController: UIViewController{
//Math.add()???
//call it with class `Math`
var abc = Math.add(2,numberTwo:3)
}
var controller = myViewController()
controller.abc //prints 5
Этот код из playgound.You может звонить из любого класса.
Ответ 3
Swift 4:
class LoginViewController: UIViewController {
//class method
@objc func addPasswordPage(){
//local method
add(asChildViewController: passwordViewController)
}
func add(asChildViewController viewController: UIViewController){
addChildViewController(viewController)
}
}
class UsernameViewController: UIViewController {
let login = LoginViewController()
override func viewDidLoad() {
super.viewDidLoad()
//call login class method
login.addPasswordPage()
}
}