2017-01-28 2 views
1

я сделал расширение файла, как это:Как создать файл расширения и вызвать его в контроллере просмотра в iOS Swift 3?

import Foundation 
import Swift 
import UIKit 

extension UIButton{ 
func sayHello() { 
     print("Hello bro...") 
    } 
} 

enter image description here

и затем вызвать метод SayHello в вид контроллера, как это:

override func viewDidLoad() { 
     super.viewDidLoad() 
     sayHello() 
    } 

Но показать эту ошибку:
enter image description here

Я думаю, что эта проблема начисляется причина импорта железа в файл расширения.
Пожалуйста, помогите мне.
Спасибо.

+0

Вы создаете метод экземпляра в расширении и Тринг позвонить методы класса –

+0

Либо вам нужно добавить ключевое слово 'class' перед' func', либо вам нужно изменить расширение с 'UIButton' на' UIViewController' –

ответ

2

Ваша реализация неправильно. Вы создаете расширение UIButton и вызываете метод на UIViewController.

extension UIViewController { 
func sayHello() { 
     print("Hello bro...") 
    } 
} 

Если вы хотите создать UIButton расширение

extension UIButton { 
    func sayHello() { 
      print("Hello bro...") 
     } 
    } 

, то вам нужно будет назвать его UIButton, как показано ниже

let button = UIButton() 
button.sayHello() 
+1

@LeoDabus Обновлен мой ответ. –

2

extension UIViewController использование не использовать UIButton

ниже кода расширения UIButton так

someButton.sayHello() является работает

extension UIButton { 
    func sayHello() { 
     print("Hello bro...") 
    } 
} 

, если вы хотите использовать в viewDidLoad() из UIViewController продлить UIViewController вместо UIButton

extension UIViewController { 
    func sayHello() { 
     print("Hello bro...") 
    } 
} 

он работает в 'viewDidLoad'

это какой-то пример расширения для вызова оповещения

ех)

extension UIViewController { 
    func alert(title: String, message: String) { 
     let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert) 
     alertController.view.tintColor = .black 
     let someAction = UIAlertAction(title: "Some", style: .default, handler: nil) 
     let alertController.addAction(someAction) 
     self.present(alertController, animated: true, completion: nil) 
    } 
}