iOS5:如何在NSObject类中使用UIActionSheet对象并使其显示在另一个视图中?
我有一个常见的方法,可以显示“联系我们”(UIActionSheet)消息。由于我在多个类中使用相同的代码,所以我尝试移动到它自己的类(我使用了NSObject类类型) 问题是,如何让UIActionSheet出现在需要它的类的NIB中 我在NSObject类中使用以下代码:iOS5:如何在NSObject类中使用UIActionSheet对象并使其显示在另一个视图中?,ios,class,nib,nsobject,Ios,Class,Nib,Nsobject,我有一个常见的方法,可以显示“联系我们”(UIActionSheet)消息。由于我在多个类中使用相同的代码,所以我尝试移动到它自己的类(我使用了NSObject类类型) 问题是,如何让UIActionSheet出现在需要它的类的NIB中 我在NSObject类中使用以下代码: UIActionSheet *msg = [[UIActionSheet alloc] initWithTitle:@"Consultation Request"
UIActionSheet *msg = [[UIActionSheet alloc]
initWithTitle:@"Consultation Request"
delegate:self
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:nil
otherButtonTitles:@"Email",@"Text",@"Office Phone", nil];
msg.actionSheetStyle = UIActionSheetStyleBlackOpaque;
[msg showInView:self.view];
显然,最后一行是错误的,因为“视图”是原始类的NIB 您可以使用窗口显示操作表。在这种情况下,您实际上不需要任何视图。无论您在何处需要操作表,只需将其显示在窗口上即可(当然,如果您不需要任何视图,请将其显示在操作表按钮的操作内)。您可以使用窗口显示操作表。在这种情况下,您实际上不需要任何视图。无论您想在哪里查看操作表,只需将其显示在窗口上即可(当然,如果您不需要任何视图,请将其显示在操作表按钮的操作内)。有3个选项 1.所有物 您可以使用属性告诉您的
NSObject
在哪里显示您的操作表:
///// MyObject.h
@property (nonatomic, strong /* or rerain if not ARC */) UIView *viewForActionSheet;
//// MyObject.m
@synthesize viewForActionSheet;
...
[msg showInView:self.viewForActionSheet];
//// MyViewController.m
MyObject *obj = [[MyObject alloc] init];
obj.viewForActionSheet = self.view;
[obj presentMyActionSheet];
2.代表
这是使用obj-c协议的更高级的方式(也称为委托)
有3种选择
1.所有物
您可以使用属性告诉您的NSObject
在哪里显示您的操作表:
///// MyObject.h
@property (nonatomic, strong /* or rerain if not ARC */) UIView *viewForActionSheet;
//// MyObject.m
@synthesize viewForActionSheet;
...
[msg showInView:self.viewForActionSheet];
//// MyViewController.m
MyObject *obj = [[MyObject alloc] init];
obj.viewForActionSheet = self.view;
[obj presentMyActionSheet];
2.代表
这是使用obj-c协议的更高级的方式(也称为委托)
//// MyObject.m
[msg showInView:[[UIApplication sharedApplication] keyWindow]];