iOS5:如何在NSObject类中使用UIActionSheet对象并使其显示在另一个视图中?

iOS5:如何在NSObject类中使用UIActionSheet对象并使其显示在另一个视图中?,ios,class,nib,nsobject,Ios,Class,Nib,Nsobject,我有一个常见的方法,可以显示“联系我们”(UIActionSheet)消息。由于我在多个类中使用相同的代码,所以我尝试移动到它自己的类(我使用了NSObject类类型) 问题是,如何让UIActionSheet出现在需要它的类的NIB中 我在NSObject类中使用以下代码: UIActionSheet *msg = [[UIActionSheet alloc] initWithTitle:@"Consultation Request"

我有一个常见的方法,可以显示“联系我们”(UIActionSheet)消息。由于我在多个类中使用相同的代码,所以我尝试移动到它自己的类(我使用了NSObject类类型)

问题是,如何让UIActionSheet出现在需要它的类的NIB中

我在NSObject类中使用以下代码:

    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]];