2014-12-30 2 views
9

Я вытащил splitViewController и определил его как подкласс, который я создал MySplitViewController.Как установить делегат диспетчера разделенного представления из раскадровки?

Если щелкнуть правой кнопкой мыши на раскадровке splitview, я вижу, что я установил его контроллеры просмотра Master и Detail, а кроме того, что делегат НЕ установлен.

Я сделал свой подкласс совместимым с протоколом и реализовал некоторые методы, но они не вызываются (что я не понимаю, потому что делегат не установлен).

Но всякий раз, когда я пытаюсь ctrl + перетащить из опции делегата в раскадровку в мой класс, она не будет связываться. На самом деле, он ничего не свяжет. Я неправильно использую этот протокол, должен ли мой подкласс UISplitViewController не быть его собственным делегатом? Тогда где определить делегат в коде или иначе?

Спасибо за ваше время.

Edit: Подробнее info-

Я попытался положить self.delegate = self; в viewDidLoad, но это не похоже, чтобы помочь.

Конкретный метод, который я пытаюсь переопределить это

splitViewControllerPreferredInterfaceOrientationForPresentation: 

и я поставил NSLog в коде извещать меня, если она вызывается, что это не

+0

У меня возникают подобные проблемы, устанавливаю делегат. Я пробовал все виды, делал делегат с подробным представлением, делал делегат с разделенным представлением, назначал делегат в делетете приложения, создавал подкласс NSObject, который соответствовал протоколу делегата, а затем добавлял объект в сцену раскадровки этого настраиваемого типа , Еще нет радости. Это проблема жизненного цикла? Ошибка в Xcode? Вы решили проблему? –

+0

Мне удалось заставить делегата подключиться, поэтому некоторые из методов работают. Однако splitViewControllerPreferredInterfaceOrientationForPresentation: похоже, не является одним из них. Интересно, не вызваны ли эти методы, потому что что-то другое в иерархии представлений вызывает похожие методы ориентации? –

ответ

0

Насколько Я знаю, что NSSplitViewController s не может иметь делегатов, а их splitView s не могут переназначить своих делегатов, поскольку контроллер действует как делегат.

Если вам нужен доступ к методам делегата, просто подклассифицируйте контроллер, а затем измените имя класса в Interface Builder.

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