2010-09-18 83 views
2

當我看在控制檯中我得到這個消息UIActionSheet崩潰的iPad /不是iPhone

 
2010-09-18 17:04:05.284 Wasted Time[8998:207] *** Assertion failure in -[UIActionSheet showInView:], /SourceCache/UIKit_Sim/UIKit-1145.66/UIAlert.m:7073 
2010-09-18 17:04:05.286 Wasted Time[8998:207] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: view != nil' 
2010-09-18 17:04:05.286 Wasted Time[8998:207] Stack: (
    42272848, 
    43430700, 
    42010379, 
    811796, 
    3796273, 
    3862560, 
    9631, 
    3616645, 
    3688229, 
    3682846, 
    3690662, 
    3686119, 
    4983946, 
    71264534, 
    71263781, 
    71207378, 
    71206706, 
    3003734, 
    3030334, 
    3011831, 
    3043800, 
    51265916, 
    41552028, 
    41547944, 
    3002913, 
    3036018, 
    8314 
) 
terminate called after throwing an instance of 'NSException' 

的代碼如下:

- (void)viewDidLoad { 
    BOOL continueYesNo; 
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    continueYesNo = [prefs boolForKey:@"keyContinueMeeting"]; 
    if (continueYesNo) { 
     NSString *message_continue = [[NSString alloc] initWithFormat:@"Do you want to Continue the Prior Meeting"]; 
     UIActionSheet *actionSheet = [[UIActionSheet alloc] 
      initWithTitle:message_continue 
      delegate:self 
      cancelButtonTitle:@"Reset" 
      destructiveButtonTitle:@"Continue" 
      otherButtonTitles:nil]; 
     [actionSheet showInView:self.view]; 
     [actionSheet release]; 
     [message_continue release]; 
    } 
} 

運行良好無論是在iPhone和在iPhone模擬器,但在iPad模擬器中崩潰。

回答

5

錯誤消息說:

無效的參數並不令人滿意:查看=零

從該行可能的:

[actionSheet showInView:self.view]; 

既然你說這個工程對iPhone,但而不是iPad,這意味着iPad進入這條線所需的代碼路徑可能與iPhone到達這條線所需的代碼路徑不同。這意味着視圖控制器的view屬性可能沒有爲iPad設置。

我的猜測:你忘了在Interface Builder中爲這個視圖控制器正在使用的xib的iPad版本連接view插座。

+0

感謝,這使得有很大的意義,但是我沒有單獨的NIB文件的iPad版本在應用程序的先前版本中,我使用了命令 - >項目,升級當前目標的iPad。 – 2010-09-18 21:28:02

+0

那麼,你的錯誤信息表明一個斷言是從'[UIActionSheet showInView:]'提出的,因爲'self.view'是'nil'。爲什麼它是'nil'?從那裏開始並工作。 – 2010-09-18 21:46:37

+0

謝謝!我爲TabView控制器中的3個TabView中的每一個創建了新的XIB。允許我創建一個更好的iPad界面..你的問題讓我朝着正確的方向前進......然而,當我爲iPad版本創建新的XIB並將它們連接到mainwindow-ipad.xib(TabViewController)時,我現在得到一個新的/不同的運行時錯誤將爲此發佈一個新問題。 – 2010-09-18 23:42:36

0

這樣做:

[self performSelectorOnMainThread:@selector(choosePhoto) withObject:nil waitUntilDone:NO]; 

-(void)choosePhoto 
{ 

    UIActionSheet* actionSheet = [[UIActionSheet alloc] initWithTitle:@"" 
                delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil 
             otherButtonTitles:@"Take Photo", @"Choose from gallery", nil]; 
    actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque; 
    actionSheet.tag = 1; 
    [actionSheet showInView:self.view]; 
    [actionSheet release]; 
} 

爲我工作

+0

謝謝..我已經能夠通過使用父指針來解決。將這個標記爲將來的檢查。 – 2010-09-28 18:43:08

+0

好吧..這似乎沒有工作的最新版本的xCode ...應用陷阱與我的[actionSheet showInView:self.parentViewController.view];我的上述解決方案;這兩個解決方法列出...回到繪圖板... – 2011-07-10 21:03:15

3

我也有這個問題,但我是用​​(修復另一個bug,其中僅取消按鈕一半是可選)。

現在我有條件地將其更改爲iPad上的[actionSheet showInView:self.view];

我發現最好不要在UIActionSheetStyleBlackTranslucent上的iPad風格 - iPad有它自己的風格,並設置這似乎添加取消按鈕(默認情況下,在iPad上沒有顯示)。

+0

行..會給這個嘗試,我發現最新的構建我的.parentViewController技巧不工作...應用程序只是每次崩潰.. – 2011-07-10 20:55:05

+0

注意:使用該窗口會導致iPhone橫向顯示錯誤的操作單 – amleszk 2013-02-23 06:24:58

0

我相信問題是視圖還沒有出現。把它放在viewDidAppear中:它應該可以正常工作。

0

對於那些像我一樣可以使用UIActionSheet略有不同比原來的問題,但在iPad上仍然失敗,我一直在使用:

[actionSheet showFromRect:m_view.bounds inView:m_view animated:YES]; 
[actionSheet release]; 

...這適用於iPhone,但無法在iPad上。

此示例適用於我的特殊應用在兩臺設備上:

[actionSheet showInView:m_view]; 
[actionSheet release]; 

的問候,大衛

0

這是一個老問題,但我今天遇到同樣的問題。 我有一個適用於iPhone和iPad的UIViewController的xib文件,UIActionSheet上的showInView方法導致iPad應用程序崩潰。

原來打電話給showInViewviewDidAppear,而不是viewDidLoad給我修好了。也許所有的IB連接都不是在viewDidLoad在iPad上被調用的時候完成的。

(我的UIViewController正在推到一個UINavigationController,所以我不知道,如果增加的動畫時間是什麼導致了整個issue_的快速反應