2014-06-23 1 views
1

Используя конструктор интерфейса, я вытащил UIScrollView на мой ImageViewController.Как создать сеттер для UIScrollView, сгенерированного из раскадровки с помощью Swift?

Я управляю перетаскиванием из ScrollView на мой ImageViewController, чтобы получить IBOutlet для управления scrollView. Который добавил код:

@IBOutlet var scrollView : UIScrollView 

Теперь я хочу установить свойство на scrollView сразу после его инициализации.

В объективном C можно было бы написать эту функцию для достижения этой цели:

-(void)setScrollView:(UIScrollView *)scrollView 
{ 
    _scrollView = scrollView 
    self.scrollView.contentSize = self.image ? self.image.size : CGSizeZero; 
} 

Это установить contentSize на представлении прокрутки вправо после того, как был инициализирован.

В настоящее время в Swift я достижение аналогичной функциональности, обернув self.scrollView внутри нового вара с функцией ПОЛУЧИТЬ как так:

var sgScrollView: UIScrollView 
{ 
    get { 
     self.scrollView.contentSize = self.image!.size 
     return self.scrollView! 
    } 
} 

Тогда вместо того, чтобы использовать этот код в viewDidLoad:

self.scrollView.addSubview(self.imageView) 

Я использую это:

self.sgScrollView.addSubview(self.imageView) 

который устанавливает размер контента на прибудете troll scrollView.

Но в объективном учебном пособии я следую за установкой размера содержимого scrollView сразу после его инициализации и установки, как и функция obj-c выше. Как я могу это сделать с помощью Swift?

ответ

3

Это будет отличное место для использования Наблюдателями от Swift. Вы можете определить willSet и didSet наблюдателей о любом имуществе в вашем классе. Вы бы хотели, чтобы наблюдатель didSet:

class ImageViewController : ViewController { 
    var image : UIImage? 
    @IBOutlet var scrollView : UIScrollView { 
    didSet { 
     self.scrollView.contentSize = self.image?.size ?? CGSizeZero 
    } 
    } 

    ... 
} 
+0

спасибо, что отлично работает – nearpoint