Conversation
| struct HierarchicalElement: Identifiable { //Structure creating element (similarity of a binary tree node) | ||
| var element: any ArtboardElement | ||
| var indentationLevel: Int | ||
| var isParent: Bool | ||
| var id: UUID { element.id } |
There was a problem hiding this comment.
Нам бы вот этот интерфейс натянуть прямо на объект, свойства сделать вычисляемыми. Тогда получится что при перетаскивании мы можем влиять на сам фрейм и его обновление будет обновляться и в других частях.
| HStack { | ||
| Image(systemName: element.isParent ? "folder" : "doc") // Images for creating hiererchy folders | ||
| .onTapGesture { | ||
| element.isParent.toggle() | ||
| } | ||
| Text(element.element.label) | ||
| } | ||
| .padding(.leading, CGFloat(element.indentationLevel * 20)) |
There was a problem hiding this comment.
Это стоит вынести в отдельную вью
| HStack { | ||
| Image(systemName: element.isParent ? "folder" : "doc") // Images for creating hiererchy folders | ||
| .onTapGesture { | ||
| element.isParent.toggle() |
There was a problem hiding this comment.
По тапу необычно, но я думаю, что так не надо. Лучше при редактировании списка дать выделять несколько компонентов, а в тулбаре показывать кнопку group, так поведение будет более системным, а значит и предсказуемым
| func move(from source: IndexSet, to destination: Int) { | ||
| hierarchicalElements.move(fromOffsets: source, toOffset: destination) | ||
|
|
||
| updateIndentationLevels() | ||
| } |
There was a problem hiding this comment.
Само перемещение хорошо работает, но тут лучше вызывать метод перезентера, чтобы он внутри фрейма данные переставлял
| if isPreviousElementParent { | ||
| currentIndentationLevel += 1 | ||
| } else { | ||
| currentIndentationLevel = 0 | ||
| } |
There was a problem hiding this comment.
Вот эта логика в презентере уже есть
No description provided.