Rubymotion: автоматическая отправка формы формы при изменении формы
Я хотел бы отправить форму формы на сервер, когда я изменил поле в форме. Кто-нибудь знает, есть ли обратный вызов изменения или что-то подобное?
Моя форма:
class SettingsScreen < PM::FormotionScreen
title "Settings"
tab_bar_item title: "Settings", icon: 'settings'
def table_data
{
sections: [
{
title: "Settings",
rows: [
{
title: "Start Date",
key: :start_date,
type: :date,
format: :medium
}, {
title: "End Date",
key: :end_date,
type: :date,
format: :medium
}
]
}
]
}
end
def on_load
self.form.on_submit do |form|
p "submitting!"
end
end
end
2 ответа
Один из способов - использовать RMQ для просмотра значений.
Пример (не проверенный) того, что вы могли бы сделать с ним:
rmq(UITextView).on(:change) do |sender|
save_something @form.render
end
Там есть недокументированные (насколько я знаю) on_change
метод для строк, но я не совсем уверен, как получить строки в первую очередь.
https://github.com/clayallsopp/formotion/search?q=on_change&ref=cmdform
Вот пример из текущего приложения, над которым я работаю. Я использую наблюдателя Bubblewrap, но я думаю, что RMQ будет работать так же. Вы можете просто сделать любой вызов в этом блоке наблюдения. Кроме того, я вспоминаю недокументированные методы, на которые ссылается Jamon на работу - они просто не работали для моей конкретной потребности. Получение строк вне фактической формы - это скорее хлопотно, но и выполнимо.
section.build_row do |row|
row.title = "Percentage"
row.type = :static
row.value = @percentage.to_i.to_s + ' %' || ''
end
section.build_row do |row|
row.title = ""
row.key = :percentage
row.type = :slider
row.range = (1..100)
row.value = @percentage || 50
observe(row, "value") do |old_value, new_value|
row.previous_row.value = new_value.to_i.to_s + ' %'
end
end