Я пытаюсь изучить Swift, и я пытаюсь разработать знаменитое приложение для заметок.ПодготавливаетForSegue правильный путь передачи значения между контроллерами вида
Существует массив, привязанный к представлению таблицы и другой вид для добавления заметок. Во втором представлении textfieldshouldreturn событие запускает segue и возвращается к таблице.
Я хотел узнать, правильно ли это. Потому что, делая это, я манипулирую переменной в другом контроллере представления. Я не мастер MVC, но я чувствовал, что это неправильно. Вот мой фрагмент кода:
func textFieldShouldReturn(textField: UITextField) -> Bool {
self.performSegueWithIdentifier("backSegue", sender: self)
return true
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if(segue.identifier == "backSegue"){
let navController = segue.destinationViewController as UINavigationController;
let myController = navController.topViewController as NotesTableViewController;
if(self.ourTextField?.text != nil || self.ourTextField?.text != ""){
myController.notes.append(self.ourTextField?.text ?? "");
}
}
}
Спасибо.
Почему вы * чувствуете себя не так? Это правильный путь. Контроллеры ara используются для управления данными и представлениями этих данных, поэтому, когда segue push (или pop) другой диспетчер представлений, разумно передавать некоторые данные между источником и получателем. –
Это, безусловно, очень распространенный способ передачи данных между контроллерами представлений, и вы не должны беспокоиться о его использовании. Множество [уважаемых разработчиков] (http://oleb.net/blog/2012/02/passing-data-between-view-controllers/) делают это. Это не единственный путь, но есть и другие варианты. Насколько я знаю, Swift не приносит ничего особенного в таблицу в этом отношении, поэтому вы должны проверить [существующий вопрос Objective C] (http://stackoverflow.com/questions/5210535/passing-data-between -view-контроллеры). –