Каково элегантное решение для проверки, какой делегат выдвинул модальный контроллер представления? - PullRequest
0 голосов
/ 06 марта 2012

У меня есть модал, отображающий более UITableViewController, который должен отображать различный текст в тексте-заполнителе UITextField в зависимости от того, как UITableViewController его назвал.

Один UITableViewController отображает предложения, другие истории.Если модальное нажатие на TableViewController, которое отображает предложения, заполнитель должен сказать «Ваше новое предложение»;если модал помещен в TableViewController, который показывает истории, он должен сказать «Название вашей истории».

Я могу NSLog имя делегата на ViewDidLoad с:

NSLog(@"delegate: %@", self.delegate);

Но я 'Я не уверен, как проверить это с помощью оператора if.Это также кажется неправильным или не элегантным - как будто где-то нарушает принципы дизайна.

Что представляет собой элегантное решение для проверки того, какой делегат выдвинул модальный контроллер вида?

Ответы [ 3 ]

2 голосов
/ 06 марта 2012

Ваш модальный контроллер не должен ничего знать о делегате, кроме того, что он реализует любой протокол делегата, который вы настроили.Таким образом, у вас есть две опции:

  • Добавить метод к вашему протоколу делегата, который возвращает строку-заполнитель, ваш модал затем запрашивает строку для использования, когда это необходимо.
  • Сделатьстрока-заполнитель - свойство вашего модального контроллера представления и передача строки-заполнителя в модал в точке создания (в prepareForSegue: или при ее создании или аналогичной)

Вариант 1, вероятно, лучше.

1 голос
/ 06 марта 2012

Самый простой способ - это, вероятно, поместить свойство в свой пользовательский контроллер представления, а затем установить его до того, как вы представите его:

MyModalViewController *viewController = [[MyModalViewController alloc] init];
viewController.placeholder = @"Your New Sentence";
[self presentModalViewController:viewController animated:YES];

Затем в viewDidLoad контроллера представления вы можете использовать значение свойства для настройки текстового поля.

Контроллеру модального представления на самом деле не нужно знать, «кто» его выдвинул; ему просто нужна некоторая информация, которую «кто» должен предоставить при настройке.

0 голосов
/ 06 марта 2012

Я бы предложил сохранить переменную BOOL для каждого controller .. в модальном режиме ... вот так

BOOL view1;
BOOL view2;
BOOL view3; .. etc 

затем представьте модально установленный один BOOL в TRUE .. в зависимости от контроллера .. и затем в вашем модальном viewDidLoad .. сделайте оператор switch, чтобы проверить, какое значение ИСТИНА .., и установите текст

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...