/ / MVC и UIButtons - цел-c, ios, модел-view-controller

MVC и UIButtons - цел-c, ios, модел-view-controller

Имам един iPad проект, който ще работя върху товадинамично създава няколко бутона, които трябва да добавя към основния изглед на моята кандидатура. Планирах да задействам метод, който живее в моя изглед от моя ViewController ... кажа, че се нарича add_buttons.Това е впечатлението ми, че в модела MVC, изгледът трябва да се справи с изобразяването на бутоните и общия дисплей, но контролерът трябва да се справи с взаимодействието. Аз също съм с впечатлението, че е лош дизайн за гледката да "знае" за контролера за оглед.

Така че, предполагам, въпросът ми е, трябва ли да имам моябутон докосване логика, съдържаща се в моя контролер? Ако е така, как да се справя с разделянето? Ако създавам бутоните по мое мнение, тогава ще трябва да има препратка към контролера на изгледа, който да използва като делегат за манипулатора на събития. Ако ги създам в контролера, тогава се чувствам като, че трябва да задам някои UI елементи в контролера, които ми изглеждат погрешно. Знам, че съм изпуснал нещо очевидно, но търсенето досега се е оказало безплодно.

Може ли някой да ме насочи в правилната посока?

Отговори:

2 за отговор № 1

Бутонът за логически бутон със сигурност принадлежи към контролера.

Кодът, който създава бутоните, вероятнопринадлежи и на контролера. Все пак, би било целесъобразно да се включи метод за преглед, който връща бутон с конфигуриран външен вид, но не и поведението му.

Някои общи pointe:

  • Преглеждащите контролери и техният изглед са много здраво свързани.
  • Ако имате съмнения, най-добре е да поставите кода в контролера за преглед.
  • Интерфейсът за изгледи трябва да се отнася за примитивни типове данни (например низове, числа, изображения). Изгледите не трябва да се нуждаят от познаване на спецификата на обектите на модела.

Също така, конвенцията за именуване на методите lowerCamelCase. Например:add_button би трябвало addButton.


1 за отговор № 2

когато добавите бутон за преглед,

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

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

-(void)myButtonPressed {
}

с цел: няма да се обработва от първия контролер, съдържащ този изглед


0 за отговор № 3

Аз с готовност завърших проект, в който трябвашединамично създаване на UIViews, които съдържат както UITextfields, така и UILabels. Моят подход към този проблем е да се обадя на функцията "addViews" от контролера на изгледа. Смятах, че това е по-добър и по-лесен подход, отколкото да се занимавате с контролери за наблюдение от вътрешността на UIView. Изпитах моя подход и работим напълно добре (динамично промяна на UIView размер и добавяне на други UIViews с UITextfield и UILabel).