Создание представления с перетаскиваемыми текстовыми элементами

Я пытаюсь создать представление для своего рода приложения для мозгового штурма, такого как, например, OmniGraffle, с элементами, которые содержат текстовые представления и которые можно перетаскивать. (Кроме того, они должны быть связаны со стрелками, но это (пока) не проблема)

Я делал домашнее задание, искал в Google и читал книги о какао, но похоже, что нет подобного примера. Поскольку я еще новичок в какао, я здесь немного беспомощен.

В чем я уверен, так это в том, что мне нужно настраиваемое представление, в котором я могу создавать свои элементы - до сих пор я пытался это сделать:

  • Сначала я искал синтаксис для добавления подокна в окно для создания моих элементов. Подокна, как я предполагал, будут автоматически перемещаться и выходить на передний план и т. Д.
    Проблема: поскольку опытные программисты какао из вас, вероятно, не удивлены, я был ошеломлен, не обнаружив ничего подобного - похоже, это быть чем-то, что только не предназначено в Какао ?!

  • Затем я подумал о создании подпредставлений, которые содержат настраиваемое представление для рисования строки заголовка (где пользователь может щелкнуть, чтобы перетащить элемент) и NSTextView.
    Проблемы:

    • I read, that it is not so clever to create dozens of subviews in a window because that would be very slow (or would that be not so bad in this case because all the subviews would be instances of always the same class?).
    • Также я не могу понять, как загрузить подвид из nib- или xib-файла. Нужен ли мне viewController? Или это только усугубит проблему десятков экземпляров?
    • И Apple говорит вам не перекрывать подвиды (ладно, это было бы не так важно, но мне действительно интересно, как ребята из OmniGroup сделали OmniGraffle ...)

  • Из-за этого я теперь хотел нарисовать строку заголовка в окружающем настраиваемом представлении и создать текстовое представление программно (как я понимаю, текстовое «представление» на самом деле не является представлением и берет свои функции от NSCell, чтобы уменьшить все усилия с видами?).
    Проблемы:

    • Even that failed because I was not able to create a textview that doesn’t fill the complete window (the initWithFrame: of the [[NSScrollView alloc] initWithFrame: aRect] just seems to be ignored or do I get that wrong?).
    • Кроме того, в конечном приложении на каждом элементе должно быть несколько кнопок. Я полагаю, что это было бы проще сделать с помощью подпредставления из пера для каждого элемента?

Что ж, теперь, когда ничего не работает, и чем больше я читаю, тем больше проблем возникает, я очень сбит с толку и разочарован.
Как я мог реализовать такую ​​программу? Может ли кто-нибудь подтолкнуть меня в правильном направлении?


person Simon    schedule 09.07.2010    source источник


Ответы (1)


Я создал класс для перетаскиваемых элементов, в котором я сохраняю положение, размер и текст в переменных экземпляра. На мой взгляд, каждый новый экземпляр элемента добавляется в массив (пока это работает без контроллера). Массив используется для рисования всех элементов цикла в drawRect:. Для текста элемента я просто использую NSTextFieldCell, для которого установлен сохраненный текст из каждого элемента в том же цикле.

Таким образом также возможно перекрытие элементов.

person Simon    schedule 21.08.2010