为弹出消息创建自定义委托函数或自定义UIView?

时间:2011-05-03 05:27:05

标签: objective-c uiview delegates

我有一个uiviewcontroller。在这个视图中,有一个按钮,当点击该按钮时,它应该弹出,类似“对话框”,它要求用户输入一些值。一旦用户输入值,它将有另一个自定义(带背景图像)“确认diaglog框”,它有2个按钮,是和否。其他类可能会重复使用此“确认对话框”。我已经阅读了有关“委托和数据源”的苹果文档以及有关SO上的委托函数的几个问题,但我仍然不确定是否应该使用委托函数。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

代表非常有用,但它们与协议密切相关。协议允许您定义一种“合同”,以确保委托将响应这些方法。例如,您可以创建名为UIConfirmBoxDelegate的协议并使用方法:

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

您的委托对象必须同时实现您的协议和此方法。第一个参数是发送委托消息的对象(它似乎是惯例,非常有用),第二个参数是一个枚举值,指示单击了哪个按钮。这应该允许您以后轻松添加更多按钮(可能是,否,取消?)。

你可以(也可能)read more about protocolsdefining enums(这是上述方法的第二个参数)。


在评论中回答新问题:如何使用委派获取UISlider的值。您可以使用每次操作滑块时触发的委托。只需拥有一个新的委托功能,例如:

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

并根据需要将确认框和滑块“整个销售”传递给代表。如果您不想将指针传递给整个滑块,也可以让它传递值。只需将该邮件发送给IBAction内的代理人,以响应您的滑块价值变化,就应该设置为。