/ / MVC та UIButtons - object-c, ios, модель-view-controller

MVC та UIButons - об'єктивно-c, ios, модель-view-controller

У мене є iPad-проект, який я працюю над цимдинамічно створює кілька кнопок, які мені потрібно додати до головного вікна моєї програми. Я планував стріляти методом, що живе всередині мого вигляду з мого ViewController ... кажуть, що він називається add_buttons.Моє враження, що в шаблоні MVC, вигляд повинен обробляти рендеринг кнопок і загальний дисплей, але контролер повинен обробляти взаємодію. Я також під враженням, що це поганий дизайн для перегляду "знаю" про контролер перегляду.

Отже, я думаю, що моє питання полягає в тому, чи повинен я мати свійкнопка логіки, що міститься в моєму контролері? Якщо так, як я можу впоратися з поділом? Якщо я створюю кнопки на мій погляд, то для цього слід мати посилання на контролер перегляду, який використовуватиметься як делегат для обробника події. Якщо я створюю їх у контролері, то я відчуваю, що мені потрібно встановити певні Елементи інтерфейсу користувача в контролері, що мені здається неправильним. Я знаю, що я пропустив щось очевидне, але пошук поки що виявився безрезультатним.

Чи може хто-небудь вказати мені в правильному напрямку?

Відповіді:

2 для відповіді № 1

Логіка кнопки торкнутися, безумовно, належить контролеру.

Можливо, код створює кнопкиналежить також і в контролері. Однак, було б сенс включити метод перегляду, який повертає кнопку зі своїм зовнішнім виглядом, але не його поведінкою.

Деякі загальні пойнт:

  • Перегляд контролерів та їхнього вигляду дуже тісно пов'язані.
  • Якщо ви сумніваєтеся, найкраще помістити код у контролер перегляду.
  • Інтерфейс переглядів повинен мати справу з примітивними типами даних (наприклад, рядки, цифри, зображення). Погляди не повинні знати специфіку модельних об'єктів.

Також, конвенція іменування для методів lowerCamelCase. Наприклад:add_button має бути addButton.


1 для відповіді № 2

коли ви додасте кнопку для перегляду,

[myButton addTarget:nil action:@selector(myButtonPressed) forControlEvents:UIControlEventTouchUpInside];

в огляд контролер додати

-(void)myButtonPressed {
}

з ціллю: event nil буде оброблятися першим контролером, що містить цей вигляд


0 для відповіді № 3

Я відновив проект, де мені довелосядинамічно створювати UIView, що містять як UITextfields, так і UILabels. Мій підхід до цієї проблеми полягав у тому, щоб викликати функцію "addViews" з-поміж контролера перегляду. Я вирішив, що це кращий і простий підхід, а не робота з контролерами перегляду зсередини UIView. Я перевірив свій підхід і працює абсолютно добре (динамічно змінювати розмір UIView та додавати інші UIView з UITextfield і UILabel).