2015-04-01 5 views
0

Я так застрял прямо сейчас, я попробовал все, что швы мне логичным, чтобы сделать эту работу, но не имея удачи ...Как я могу назвать эту функцию?

Я получил это в отдельном файле стремительной:

импорта Фонд импорта UIKit

class MyViewController: UIViewController { 

    func background() { 
     var imageView : UIImageView 
     imageView = UIImageView(frame:CGRectMake(0, 0, 100, 300)); 
     imageView.image = UIImage(named:"bg.jpg") 
     self.view.addSubview(imageView) 
    } 
} 

Я хочу назвать это отдельным файлом контроллера. Причина, по которой я это делаю, заключается в том, что тогда я могу просто вызвать класс фона во всех моих контроллерах представления a, и мне не нужно делать один и тот же код в каждом из них.

Пути я пытался называть его являются:

MyViewController.background() - я получаю ошибку Missing parameter for #1 in call

background() - я получаю ошибку Use of unresolved identifier 'background'

MyViewController() - Я не получаю ошибку, но ничего не происходит.

Я был бы очень признателен, если бы кто-нибудь мог сказать мне, как я могу назвать эту функцию в моей части «ViewDidLoad» в контроллере представления.

спасибо.

ответ

3

Вы лаете неправильное дерево. Даже если вы могли бы вызвать метод background в MyViewController, это все равно не выполнит то, что вы пытаетесь выполнить, потому что, когда вы вызываете background в «отдельный файл контроллера вида», self в методе background будет другой вид контроллер - и поэтому вы бы поместили UIImageView в другой вид, а не этот вид контроллера. Если вы хотите иметь возможность делать то же самое отдельно в каждом контроллере представления, вам необходимо сделать метод background внутренне в каждом из них.

Способ сделать это, чтобы придать background через расширение в самой UIViewController, от которого все ваши просматривать контроллеры наследуют:

extension UIViewController { 
    func background() { 
     var imageView = UIImageView(frame:CGRectMake(0, 0, 100, 300)) 
     imageView.image = UIImage(named:"bg.jpg") 
     self.view.addSubview(imageView) 
    } 
} 

Теперь любой контроллер вид в приложении можно просто сказать self.background() (или просто background()), чтобы вызвать этот метод.

Смежные вопросы