2013-02-25 68 views
2

我想給用戶發送到另一個控制器,當他們點擊一個UIAlertView中的「確定」按鈕,但我發現了以下錯誤:轉發UIAlertView中點擊另一個cotroller

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** setObjectForKey: object cannot be nil (key: classname)' 

我UIAertView是if語句這樣的範圍內:

if([placemarks count] > 0) 
    { 
    CLPlacemark *foundPlacemark = [placemarks objectAtIndex:0]; 
    UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Location set" 
         message:[NSString stringWithFormat:@"Your location, was set to %@", foundPlacemark.country] 
               delegate:self 
             cancelButtonTitle:@"OK" 
             otherButtonTitles:nil]; 
      [message show]; 

    } 

我檢查按鈕被點擊有:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    if(buttonIndex == 0) 
{ 
    MasterViewController *controller=[[MasterViewController alloc]initWithNibName:@"MasterViewController" bundle:nil]; 
    [self.navigationController pushViewController:controller animated:YES]; 
    } 
} 

我確實有代表組:

@interface LocationViewController : UIViewController <CLLocationManagerDelegate, UIAlertViewDelegate> 

UIAlertView可以正常工作。有什麼想法,我失蹤了?

+0

的錯誤是非常自我解釋。您正在嘗試爲鍵「classname」設置一個零值。我沒有看到你發佈的代碼中的任何地方,所以我不認爲錯誤在這裏。你是否設置了一個異常斷點來查看它是否確定了違規行? – rdelmar 2013-02-25 02:57:01

+0

當你點擊確定按鈕時,你的應用程序崩潰了嗎? – akiniwa 2013-02-25 03:28:55

+0

@rdelmar斷點除main之外不顯示任何有用的內容。 – Anthony 2013-02-25 03:30:19

回答

1
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    if(buttonIndex == 0) 
{ 
    // MasterViewController *controller=[[MasterViewController alloc]initWithNibName:@"MasterViewController" bundle:nil]; 
     MasterViewController *controller=[[MasterViewController alloc]init]; // creat your MasterViewController like this. 
    [self.navigationController pushViewController:controller animated:YES]; 
    } 
} 

,如果它不被編碼這樣的崩潰,我認爲這個問題是您的IB

+0

好的,這工作。非常感謝。現在要弄清楚什麼是錯的。 – Anthony 2013-02-25 04:08:56

1

您是否使用Interface Builder來製作MasterViewController的用戶界面?看起來MasterViewController的nib文件有問題。當MasterViewController從xib文件中獲取init時,該設置丟失,並且出現異常。

最可能的情況是xib文件和文件所有者之間可能存在某些不良連接。請檢查您的代碼中是否有連接的IBOutlet,但將連接保留在xib文件中。如果是這樣,刪除連接,它可以解決。

+0

如果我切換代碼並直接轉到Master並且不使用LocationController,那麼一切正常。 – Anthony 2013-02-25 03:58:21

+0

看起來你是對的。它只與init一起工作,現在可以追蹤這個概率。謝謝。 – Anthony 2013-02-25 04:11:11

相關問題