2016-03-04 4 views
0

Я сделал класс:Swift «удобство переопределения инициализации» не работает

import UIKit 

class SearchBarItem: UIBarButtonItem { 
    override convenience init() { 
     self.init() 
     self.title = "TEST" 
    } 
} 

И это мой View Controller:

import UIKit 

class ViewController: UIViewController { 
    @IBOutlet weak var searchBtnItem: SearchBarItem! 

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

В раскадровке У меня есть панель навигации с searchBtnItem, идентифицирующую класс инспектора is SearchBarItem

Но имя searchBtnItem не будет изменено на TEST. Что не так?!

ответ

2

Экземпляры, загруженные из раскадровки, не используют init, они используют initWithCoder:, так что это функция, которую вам нужно переопределить и реализовать с помощью вашей логики.

+0

Спасибо, он работает. но почему ?! Это не имеет смысла для меня! – Vahid

+0

все, что вы настраиваете в раскадровке, предоставляется новому экземпляру в декодере, так что его можно настроить во время init, так что это метод, который используется, а не простой init – Wain

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