Переменная позиции перетаскивания структуры читается как 0IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Переменная позиции перетаскивания структуры читается как 0

Сообщение Anonymous »

У меня есть представление TouchModelerContentView, которое представляет собой ScrollView с двумя представлениями TableView.
Представление TableView имеет DragGesture который позволяет перемещать представление вокруг ScrollView.
Я хочу нарисовать линию между двумя представлениями TableView, и для этого мне нужно получить доступ к смещению, хранящемуся в таблице , но когда я пытаюсь получить к ней доступ из TouchModelerContentView, она возвращает смещение как (0, 0), несмотря на то, что я перетащил таблицы на экран.
TouchModelerContentView

Код: Выделить всё

ScrollView {
ZStack {
ForEach($tables) { $table in
TableView(table: $table)
}

ForEach(tables) { table in
ForEach(table.relations) { relation in
Path { path in
path.move(to: CGPoint(x: relation.source.offset.width, y: relation.source.offset.height))
path.addLine(to: CGPoint(x: relation.target.offset.width, y: relation.target.offset.height))

print("\(relation.source.name) \(relation.source.offset) -> \(relation.target.name) \(relation.target.offset)") // Prints "Table2 (0.0, 0.0) -> Table1 (0.0, 0.0)"
}
}
}
}
}
Структура таблицы

Код: Выделить всё

struct Table: Identifiable {
struct Relation: Identifiable {
let id = UUID()
let source: Table
let target: Table
}

let id = UUID()
let name: String
var relations = [Relation]()
var startingOffset: CGSize = .zero
var currentOffset: CGSize = .zero
var offset: CGSize {
CGSize(width: startingOffset.width + currentOffset.width, height: startingOffset.height + currentOffset.height)
}
}
Представление TableView (где задается смещение)

Код: Выделить всё

struct TableView: View {
@Binding var table: Table

var body: some View {
VStack {
...
}
.offset(table.offset)
.gesture(
DragGesture()
.onChanged { gesture in
table.currentOffset = gesture.translation
}
.onEnded{ gesture in
table.startingOffset.width += table.currentOffset.width
table.startingOffset.height += table.currentOffset.height
table.currentOffset = .zero
}
)
}
}

Код: Выделить всё

TableView
должен правильно устанавливать смещения, потому что я могу перетаскивать таблицы в своем симуляторе и видеть изменение их положения, однако, когда я пытаюсь получить смещение внутри TouchModelerContentView, я получаю (0, 0)< /код> позиция. Почему не получается правильное смещение?

Подробнее здесь: https://stackoverflow.com/questions/782 ... -read-as-0
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Жест перетаскивания Android: можно ли иметь события в начале перетаскивания во время перетаскивания?
    Anonymous » » в форуме Android
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Переменная laravel не читается из MySQL
    Гость » » в форуме Php
    0 Ответы
    32 Просмотры
    Последнее сообщение Гость
  • Переменная laravel не читается из MySQL
    Гость » » в форуме Php
    0 Ответы
    18 Просмотры
    Последнее сообщение Гость
  • Глобальная переменная не читается в функции и во вложенном цикле
    Anonymous » » в форуме Python
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Реакция: Как создать дескриптор перетаскивания с помощью перетаскивания?
    Anonymous » » в форуме CSS
    0 Ответы
    66 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»