Я поднял старый проект, пытаясь повторно использовать некоторые функции. Я создал перо с подклассом UIView. В оригинальной рабочей версии мне не нужно было устанавливать File's owner
в IB. Однако я получаю сообщения об ошибках, намекающих на то, что теперь мне нужно это сделать (Xcode 7): loaded the "TipView" nib but the view outlet was not set.
Итак, я приступил к подключению File's owner
к контроллеру представления, который отвечает за настройку представления. Вот соответствующий код из контроллера представления:
class TipViewController: UIViewController {
private let kTipViewHeight: CGFloat = 400
private let kTipViewWidth: CGFloat = 300
override func viewDidLoad() {
super.viewDidLoad()
if let tipView = createTipView() {
let center = CGPoint(x: CGRectGetWidth(view.bounds)/2, y: CGRectGetHeight(view.bounds)/2)
tipView.center = center
view.addSubview(tipView)
}
}
func createTipView() -> UIView? {
if let view = UINib(nibName: "TipView", bundle: nil).instantiateWithOwner(nil, options: nil).first as? TipView {
view.frame = CGRect(x: 0, y: 0, width: kTipViewWidth, height: kTipViewHeight)
return view
}
return nil
}
}
extension UIViewController {
func presentTips(tips: [Tip], animated: Bool, completion: (() -> Void)?) {
let controller = TipViewController()
controller.modalTransitionStyle = .CrossDissolve
presentViewController(controller, animated: animated, completion: completion)
}
}
Я попытался установить instantiateWithOwner
на: .instantiateWithOwner(self, options: nil).first
(изменил nil
на self
) также безрезультатно.
Это соответствующий код контроллера представления представления:
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
presentTips([], animated: true, completion: nil)
}
Подкласс UIView не делает ничего необычного, поэтому я не стал включать его код.
Когда я вношу запрошенные изменения - добавляю TipViewController в качестве владельца файла пера и подключаю его выход view
к представлению пера - я получаю ряд сообщений об ошибках в зависимости от того, какие конфигурации я беру, начиная от:
this class is not key value coding-compliant for the key view.
Can't add self as subview
Не уверен, почему я смог использовать перо без владельца файла в Xcode 6, но я не могу сделать это с Xcode 7 - не нашел никаких материалов или заметок о выпуске, связанных с изменением, поэтому я немного запутался пока.
Любая помощь очень ценится.