2010-09-08 63 views
2

我有一個小小的懷疑。我有一個NSObject類,我試圖顯示一個警報視圖。所以當我點擊確定按鈕時顯示警告視圖後,我想將導航控制器推入堆棧。我可以從普通NSObject類中推導航控制器嗎?請讓我知道您的時間guys..thanks ..UIAlertView問題

這是代碼..

- (void) alertView:(UIAlertView *)alert clickedButtonAtIndex:(NSInteger)buttonIndex{  
    SettingsViewController *homeView = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil]; 
    [self.navigationController pushViewController:homeView animated:NO]; 
    [homeView release]; 

} 

我創建了一個名爲類型的UINavigationController的navigationController屬性,當我趕上了錯誤我顯示警報視圖和我正在使用上述方法來推視圖控制器,但它不起作用。

回答

3

是和不是...取決於你如何設置你的應用程序。要將視圖推到導航堆棧上,您需要有一個導航控制器

您的NSObject是否可以訪問此導航控制器 - 您可能必須設置一個委託方法,該方法在警報視圖委託在您的NSObject中被調用時從委託視圖中調用。

我只是想知道爲什麼你在NSObject中顯示UIAlertView,爲什麼不在UIView或UIViewController中顯示它?

CustomObject.h

@protocol CustomObjectDelegate<NSObject> 
@optional 
- (void)customObjectAlertViewDidClickOk; 
@end 

@interface CustomObject : NSObject <UIAlertViewDelegate>{ 
    id<CustomObjectDelegate> delegate; 
} 
@property (nonatomic, assign) id<CustomObjectDelegate> delegate; 
@end; 

CustomObject.m

@synthesize delegate; 
// then put this: 
- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { 
    [delegate customObjectAlertViewDidClickOk]; 
} 

那麼你的視圖控制器的.h文件需要包括自定義對象和分配的委託方法:

#include "CustomObject.h" 
@interface MyViewController : UIViewController <CustomObjectDelegate> { 

} 
@end 

和.m viewDidLoad(或類似的):

- (void)viewDidLoad{ 
    CustomObject *obj = [[CustomObject alloc] init]; 
    [obj setDelegate:self]; 
} 
- (void)customObjectAlertViewDidClickOk{ 
    AnotherViewController *page = [[AnotherViewController alloc] initWithNibName:nil bundles:nil]; 
    [self.navigationController pushViewController:page]; 
} 

多數民衆贊成我該怎麼做 - 因爲我不太確定我明白你的要求。 :)這些都是我的頭頂 - 所以不要把它寫成信件,但你有基礎開始。你可以建立它。查看@協議和委託方法,它的全部內容。 :)

+0

感謝您的答覆thomas..I使用服務和服務是一個NSObject類..因此,無論何時我遇到服務錯誤我顯示警報視圖..我在NSObject類中使用了alertview的clickedButtonAtIndex方法,但我不知道如何從這種方法推動導航控制器..可以請你幫我關於這個..如果可能請你張貼一個示例代碼.. – racharambola 2010-09-08 20:55:38

+0

我不確定你的真正含義。您可能需要自己發佈一些代碼才能幫助您。不過,我建議你只是創建一個gts在'clickedButtonAtIndex'中調用的委託方法。我會用一個例子更新我的文章... – 2010-09-08 23:32:56

+0

謝謝托馬斯..我會試一試..我包括一些代碼..請看看它,如果你有一些時間..再次感謝您的時間 – racharambola 2010-09-09 00:21:21