【问题标题】:Possible to use UIActionSheet from Application Delegate?可以从应用程序委托中使用 UIActionSheet 吗?
【发布时间】:2010-09-12 22:45:41
【问题描述】:
我有一个共同的UIActionSheet,我在大约 10 个不同的视图/视图控制器中使用它。我想知道是否可以从应用程序委托中使用UIActionSheet 以防止代码重复?
到目前为止,我尝试使用委托的操作表没有奏效,我怀疑我的问题出在调用 showInView 方法时 - 我需要实例化我的视图控制器的对象然后在此处使用 viewController.view ?如果是这样,我如何才能知道哪个视图从委托中调用了操作表方法?
【问题讨论】:
标签:
iphone
objective-c
delegates
ios
【解决方案1】:
我没有尝试 c_phlat 提出的方法,但我想知道 self.view 映射到什么。
我确实做到了:
[actionSheet showInView:window];
效果也一样。
【解决方案2】:
我遇到了同样的问题,我最近想出了一种方法来在我的应用程序中解决它。对我来说,关键是让我的应用程序委托类成为 UIViewController 而不是 NSObject 的扩展。 (我认为 UIViewController 无论如何都是 NSObject 的子类,所以这不会对您的应用产生太大影响。)
换句话说,将您的应用委托接口文件中的主要实现行从以下内容更改:
@interface YourAppDelegate : NSObject <UIApplicationDelegate, UIActionSheetDelegate> {
到这里:
@interface YourAppDelegate : UIViewController <UIApplicationDelegate, UIActionSheetDelegate> {
您现在应该可以在您的应用委托实现中将 showInView: 方法与您的操作表一起使用:
[yourActionSheet showInView:self.view];