必须使用Protocol,在类定义的地方定义使用UIActionSheetDelegate协议,
@interface XXXController : UIViewController <UIActionSheetDelegate> {...
在程序里面调用
UIActionSheet *actionSheet = [[UIActionSheet alloc]
initWithTitle:@"Are you sure?" //标题
delegate:self //此处指定处理按钮按下之后的事件的类,该类必须实现UIActionSheetDelegate协议
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:@"OK"
otherButtonTitles:@"button1", @"button2", nil]; //可指定很多个button,最后一个参数必须为nil,此为OBJC特殊特性
[actionSheet showInView:self.view]; //在哪个view里面弹出上拉菜单
[actionSheet release]; //一定要release
记得最后一定要release!
处理按钮事件的方法为实现UIActionSheetDelegate协议的actionSheet方法:
- (void)actionSheet:(UIActionSheet *)actionSheet
didDismissWithButtonIndex:(NSInteger)buttonIndex
{
if( buttonIndex != [actionSheet cancelButtonIndex]){
//...
}
}
心得:IOS开发严格follow Model-View-Control模式,仔细想来,原因可能是为了保证人机交互的及时性,MVC可以让view变得非常独立,不受Control的影响,这样一些界面上面的动画特效就的实现不会受后台control的影响,用户体验好。我猜想应该是这个原因吧。