Создать пользовательскую функцию делегата или пользовательский UIView для всплывающего сообщения? - PullRequest
0 голосов
/ 03 мая 2011

У меня есть контроллер uiview.В этом представлении есть кнопка, при нажатии на которую она должна появиться, что-то вроде «диалогового окна», которое просит пользователя ввести какое-то значение.После того, как пользователь введет значение, у него будет другое настроенное (с фоновым изображением) «поле для подтверждения диалогового окна», которое имеет 2 кнопки, да и нет.Это «диалоговое окно подтверждения» может быть повторно использовано другими классами.Я прочитал документы Apple о «делегатах и ​​источниках данных» и несколько вопросов о функциях делегатов в SO, но я все еще не уверен, стоит ли мне использовать функцию делегата.Есть мысли?

1 Ответ

1 голос
/ 03 мая 2011

Делегаты очень полезны, но они идут рука об руку с протоколами. Протоколы позволяют вам определять своего рода «контракт», чтобы делегат отвечал на эти методы. Например, вы можете создать протокол с именем UIConfirmBoxDelegate и иметь метод:

- (void)confirmBox:(UIConfirmBox*)box didChoose:(ButtonEnum)button;

Ваш делегированный объект должен будет реализовать как ваш протокол, так и этот метод. Первый параметр - это объект, который отправляет делегированное сообщение (кажется, это соглашение, очень полезное), а второй параметр - это значение перечисления, указывающее, какая кнопка была нажата. Это должно позволить вам легко добавлять дополнительные кнопки в будущем (возможно, да, нет, отмена?).

Вы можете (и, вероятно, должны) узнать больше о протоколах и , определяющих перечисления (это второй параметр метода, упомянутого выше).


Чтобы ответить на новый вопрос в комментариях: Как получить значение UISlider, используя делегирование. Вы можете использовать делегат, который запускается каждый раз при манипулировании слайдером. Просто добавьте новую делегатскую функцию, такую ​​как:

- (void)confirmBox:(UIConfirmBox*)box didChangeSlider:(UISlider*)slider;

и передайте делегату окно подтверждения и ползунок «вся продажа», если это необходимо. Вы также можете просто передать ему значение, если вы не хотите передавать указатель на весь слайдер. Просто отправьте это сообщение вашему делегату внутри вашего IBAction в ответ на изменения значения вашего ползунка, и вы должны быть готовы к работе.

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