2015-04-01 3 views
0

Я хочу программно создать представление изображения в функции. Это будет содержать фон изображения и некоторые логотипы - тогда во всех моих других изображениях я могу просто использовать все функции, и я не буду делать то же самое на каждом из них.Как создать UIImageView в быстрой программно в отдельной функции?

Я создал пустой файл быстрый и поместите в него:

import Foundation 
import UIKit 

func background() { 

    var imageView : UIImageView 
    imageView = UIImageView(frame:CGRectMake(10, 50, 100, 300)); 
    imageView.image = UIImage(named:"image.jpg") 
    self.view.addSubview(imageView) 

} 

Единственная ошибка, что я получил на self.view.addSubview(imageView) линии. Сообщение об ошибке было Use of unresolved identifier 'self'. Я попробовал просто удалить слово «я», поэтому строка сказала это вместо view.addSubview(imageView), но затем Use of unresolved identifier 'view'.

Мой вопрос в том, что я делаю неправильно?

Благодаря

EDIT:

Так что я изменил его на это сейчас, это правильно?

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

class MyViewController: UIViewController { 

    func background() { 

     var imageView : UIImageView 
     imageView = UIImageView(frame:CGRectMake(10, 50, 100, 300)); 
     imageView.image = UIImage(named:"bg.png") 
     self.view.addSubview(imageView) 

    } 

} 

я больше не получить какую-либо ошибку в этой части, но при вызове функции из класса ViewController я получаю сообщение об ошибке Use of unresolved identifier 'background'. I should add that I am calling it in the other document by doing this фона() `в представлении сделал функцию нагрузки ,

+0

Как вы называете фон? – aahrens

+0

Я пробовал называть его выполняющим 'background()', который дал мне сообщение об ошибке «Использование нерешенного идентификатора« фон », и я также попробовал называть его с помощью' MyViewController.background() 'и получил сообщение об ошибке« Отсутствует параметр для # 1 в вызове'. – cross

+0

background() - это метод экземпляра, который означает, что он может быть вызван на экземпляр вашего класса. MyViewController.background() считает, что это метод класса. – aahrens

ответ

0

Вам нужен класс, подкласс UIViewController, чтобы иметь доступ к view собственности

+0

Спасибо за ваш ответ. У меня есть вопрос с моим вопросом, и это не дает мне. – cross

+0

Я бы сменил имя вашего класса на более наглядное. Как класс MyViewController: UIViewController – aahrens

2

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

Из функции экземпляра:

class MyViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Called from within another instance function 
     self.background() 
    } 

    func background() { 

     var imageView : UIImageView 
     imageView = UIImageView(frame:CGRectMake(10, 50, 100, 300)); 
     imageView.image = UIImage(named:"bg.png") 
     self.view.addSubview(imageView) 

    } 

} 

Или где-то в коде вы можете создать экземпляр и называем фон, как это:

func someOtherFunction() { 
// Create instance and then call background 
     var myView:MyViewController = MyViewController() 
     myView.background() 
    } 

Я бы порекомендовал вам узнать разницу между методом экземпляра против метода класса и решить, что вы пытаетесь сделать: What is the difference between class and instance methods?

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