Есть 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 (a.k.a. делегат)
//// MyObject.h
@protocol MyObjectDelegate <NSObject>
@required
- (UIView *)viewForActionSheet;
@end;
@interface MyObject : NSObject
...
@property (nonatomic, unsafe_unretained /* or assign if not ARC */) id <MyObjectDelegate> delegate;
@end
//// MyObject.m
@synthesize delegate;
...
[msg showInView:self.delegate.viewForActionSheet];
//// MyViewController.m
- (UIView *)viewForActionSheet {
return self.view;
}
3. Окно
Самый простой способ, но не самый безопасный
//// MyObject.m
[msg showInView:[[UIApplication sharedApplication] keyWindow]];