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

问题描述:

我有一个uiviewcontroller。在这个视图中,有一个按钮,当点击该按钮时,它应该弹出,如“对话框”,它要求用户输入一些值。一旦用户输入值,它会有另一个自定义(带背景图像)“确认诊断框”,它有2个按钮,是和否。这个“确认对话框”可能会被其他类重新使用。我已阅读关于“委托和数据源”的苹果文档以及关于委托功能的几个问题,但我仍不确定是否应使用委托功能。有什么想法吗?为弹出消息创建自定义委托函数或自定义UIView?

代表是非常有用的,但他们与协议齐头并进。协议允许您定义一种“合约”来确保委托人对这些方法做出响应。例如,您可以添加一个名为UIConfirmBoxDelegate协议,并有一个方法:然后

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

您的委派对象必须同时实现您的协议和这种方法。第一个参数是发送委托消息的对象(它似乎是约定,在这方面非常有用),第二个参数是枚举值,指示哪个按钮被点击。这应该允许您在未来轻松添加更多按钮(可能是,否,取消?)。

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


要回答在评论一个新的问题:如何使用代表团获得UISlider的价值。您可以使用每次操纵滑块时触发的委托。只要有一个新的委托功能,如:

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

和确认框和滑块“整体出售”传递给委托做需要。如果你不想传递一个指针到整个滑块,你也可以让它传递值。只需将该消息发送给IBAction内的代理人,以响应您的滑块值更改,并且您应该设置为继续。

+0

+1代表团。 Objective-C鼓励最好的设计模式之一。 – Sam 2011-05-03 05:41:23

+0

不错!在确认框中,我有一个用户输入值(我使用UISlider获取他/她想购买的物品数量)?我如何得到这个价值? – 2011-05-03 06:06:12

+0

答复已更新。 – 2011-05-03 06:22:53