2010-09-12 2 views
1

У меня есть общий UIActionSheet, который я использую примерно через 10 различных контроллеров просмотра/просмотра. Мне интересно, можно ли использовать UIActionSheet из делегата приложения, чтобы предотвратить дублирование кода?Возможно использование команды UIActionSheet из приложения-делегата?

До сих пор мои попытки использовать лист действий делегата не сработали, я подозреваю, что моя проблема заключается в вызове метода showInView - мне нужно создать экземпляр объекта моего контроллера представления, а затем использовать viewController.view здесь? Если да, то как я могу затем указать, какой вид вызвал метод действия из делегата?

ответ

0

У меня была такая же проблема, и я недавно выяснил способ исправить ее в своем приложении. Ключ для меня состоял в том, чтобы сделать класс делегата приложения расширением UIViewController, а не NSObject. (. Я думаю, что UIViewController подкласс NSObject в любом случае, так что это не должно повлиять на ваше приложение слишком много)

Другими словами, изменить основную линию реализации в вашем делегатом файл интерфейса приложения от чего-то вроде этого:

@interface YourAppDelegate : NSObject <UIApplicationDelegate, UIActionSheetDelegate> { 

для этого:

@interface YourAppDelegate : UIViewController <UIApplicationDelegate, UIActionSheetDelegate> { 

Теперь вы должны быть в состоянии использовать showInView: метод с действия листа в вашем приложении реализации делегата:

[yourActionSheet showInView:self.view]; 
2

Я не пробовал подход, предложенный c_phlat, но мне интересно, на что отображается self.view. мне удалось сделать это следующим образом:

[actionSheet showInView:window]; 

это работает точно так же.

Смежные вопросы