У меня есть время, создающее простой вид сплита. Первый вид сплита рухнул. Мне нужно установить для него минимальную ширину. Все, что я вижу в Интернете (мало для NSSplitViewController/NSSplitView), предназначено для Objective-C, помещает все в делегат приложения и использует XIB.Установка минимальной ширины NSSplitViews
Вот сценарий: Контроллер окна с segue контроллеру SplitView, который имеет два разделенных вида (2 контроллера вида).
В каком объекте должен быть NSSplitViewDelegate?
EDIT: Добавление фрагмента кода: Например, у меня есть это:
import Cocoa
class ViewController: NSSplitViewController, NSSplitViewDelegate {
@IBOutlet weak var pdlSplitView: NSSplitView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func splitView(splitView: NSSplitView, constrainMinCoordinate proposedMinimumPosition: CGFloat, ofSubviewAt dividerIndex: Int) -> CGFloat {
return proposedMinimumPosition + 200
}
}
Есть еще, что я не хватает?
Благодаря
UPDATE
Основываясь на комментариях ниже, я сделал изменения, но теперь я получаю sigAbort по определению класса для AppDelegate. Full code
ViewController:
import Cocoa
class ViewController: NSSplitViewController, NSSplitViewDelegate {
@IBOutlet weak var pdlSplitView: NSSplitView!
let publicDataListings : PDL = PDL()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.pdlSplitView.delegate = self
}
override func splitView(splitView: NSSplitView, constrainMinCoordinate proposedMinimumPosition: CGFloat, ofSubviewAt dividerIndex: Int) -> CGFloat {
return proposedMinimumPosition + 200
}
}
SidebarViewController:
import Cocoa
class SidebarViewController: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
}
}
DatasetViewController:
import Cocoa
class DatasetViewController: NSViewController, NSSplitViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
}
}
Update Я забрал свой обычай NSSplitViewCont класса роликов и создал два класса NSSplitView, один с методом ограничения. Теперь я вижу, как подвидов, но они гораздо меньше, чем они должны быть:
Есть ли кто-нибудь на всех, что сделал это с Swift и раскадровки?
Вы используете автоматическую компоновку? Какова более ранняя версия ОС, на которой вы хотите запустить приложение? Если вы используете таргетинг 10.8 или более поздней версии и используя автоматическую компоновку, разделенное представление будет соблюдать ограничения своих подзонов. Таким образом, минимальная ширина может быть неявной, потому что что-то внутри subview имеет внутреннюю ширину и сопротивляется сжатию и имеет передние и конечные ограничения для subview. Или вы можете создать явное ограничение ширины в подзаголовке, которое будет больше или равно некоторой константе. –
Я в порядке с таргетингом 10.10+. Я пытаюсь сделать это в Свифт. Я пробовал применять ограничения, но они не придерживаются. Я знаю, что сейчас это мобильный мир, но, черт возьми, я бы заплатил за Sweet прямо сейчас. Тогда я поеду на гонки. –
Если вы реализуете определенные методы делегата с разделенным представлением, тогда разделенный вид не будет использовать автоматическую компоновку. См. Примечания к выпуску AppKit для 10.8 для конкретной информации. Кроме того, я не уверен, что методы делегирования разделенного представления совместимы с 'NSSplitViewController'. Если удаление этого метода делегата не помогает, покажите ограничения, которые вы пытались настроить, и как вы это сделали. –