Делегаты очень полезны, но они идут рука об руку с протоколами. Протоколы позволяют вам определять своего рода «контракт», чтобы делегат отвечал на эти методы. Например, вы можете создать протокол с именем UIConfirmBoxDelegate
и иметь метод:
- (void)confirmBox:(UIConfirmBox*)box didChoose:(ButtonEnum)button;
Ваш делегированный объект должен будет реализовать как ваш протокол, так и этот метод. Первый параметр - это объект, который отправляет делегированное сообщение (кажется, это соглашение, очень полезное), а второй параметр - это значение перечисления, указывающее, какая кнопка была нажата. Это должно позволить вам легко добавлять дополнительные кнопки в будущем (возможно, да, нет, отмена?).
Вы можете (и, вероятно, должны) узнать больше о протоколах и , определяющих перечисления (это второй параметр метода, упомянутого выше).
Чтобы ответить на новый вопрос в комментариях: Как получить значение UISlider
, используя делегирование. Вы можете использовать делегат, который запускается каждый раз при манипулировании слайдером. Просто добавьте новую делегатскую функцию, такую как:
- (void)confirmBox:(UIConfirmBox*)box didChangeSlider:(UISlider*)slider;
и передайте делегату окно подтверждения и ползунок «вся продажа», если это необходимо. Вы также можете просто передать ему значение, если вы не хотите передавать указатель на весь слайдер. Просто отправьте это сообщение вашему делегату внутри вашего IBAction
в ответ на изменения значения вашего ползунка, и вы должны быть готовы к работе.