То, как я смотрю на парадигму MVC (и помните, это просто парадигма - она открыта для интерпретации ) - это то, что Модель ничего не знает о представлении, а представление ничего не знает о модели.Они не должны напрямую взаимодействовать;строго говоря, в вашем представлении не должно быть экземпляра вашей модели.
Именно здесь контроллер становится важным.Я собираюсь притвориться, что у вашего BankAccountView
есть несколько ярлыков для отображения информации об учетной записи, и, возможно, табличное представление для отображения всех транзакций по счету (давайте представим, просто для иллюстрации).Тогда у вас будет что-то вроде этого:
MyBankAccountViewController
- это подкласс UIViewController
( C в MVC), чье представление является экземпляром BankAccountView
.Ваш контроллер представления также имеет экземпляр BankAccount
.В соответствующее время (например, -viewDidLoad
) вы захотите заполнить свое представление (и его подпредставления) информацией из вашей BankAccount
модели (self.bankAccountView.accountNameLabel.text = self.myBankAccount.name
или чего-то еще).
MyBankAccountViewController
также будет выступать в качестве делегата и источника данных для представления таблицы в вашем представлении, предоставляя ему ячейки с перечнем информации о транзакциях учетной записи.
Когда в вашем представлении происходит что-то, что должно изменить вашу модель (например,пользователь нажимает кнопку «Закрыть эту учетную запись»), «событие» будет отправлено из представления в контроллер (через делегирование, целевое действие или другой выбранный вами механизм).Затем контроллер решает, что делать, например, [self.bankAccount closeBankAccount];
.
Как я уже сказал, именно так я интерпретирую MVC (я рассматриваю его строго и педантично), и это может усложнить ваш код больше, чем просто передатьмодель напрямую.Если вы просто собираетесь использовать это представление точно в одном месте и никогда не планируете использовать его повторно, то переход напрямую будет, вероятно, более простым.Просто имейте в виду, что это за счет усложнения повторного использования в будущем (что является одним из ключевых преимуществ MVC: ваши модели и ваши представления должны быть повторно использованы; ваш контроллер не будет).