2012-03-31 7 views
0

私は、tabbarcontrollerとnavigationcontrollerを持つiOS TabBarアプリケーションを持っています。 私の詳細ビューでは、私の最初のタブtableviewcontrollerからプッシュされています。私は電子メール共有でnavigationItem.rightBarButtonItemを共有しています。MFMailComposeViewController ModalViewがiOS5アプリケーションをクラッシュする

I持っている。このため、次のコード:

- (void)share 
{ 
    UIActionSheet *popupQuery = [[UIActionSheet alloc] initWithTitle:@"Send" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Email",nil]; 
    popupQuery.actionSheetStyle = UIActionSheetStyleBlackTranslucent; 
    [popupQuery showInView:self.view]; 
    [popupQuery release]; 
} 

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { 

     if (buttonIndex == 0) { 
     if ([MFMailComposeViewController canSendMail]){ 
      MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; 
      [picker setMailComposeDelegate:self]; 
      [picker setSubject:@"New theme"]; 
      NSString *emailBody = @"Hi there"; 
      [picker setMessageBody:emailBody isHTML:NO]; 
      [self resignFirstResponder]; 
      picker.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
      picker.modalPresentationStyle = UIModalPresentationCurrentContext; 
      [self presentModalViewController:picker animated:NO]; 
      [picker release]; 

     } 
     else{ 
     } 
} 
} 

アプリは私の作曲の図を示しているが、私は、このビューで何かをやろうとしているとき(例えば、アドレスをピックアップしたり、何かを綴ります) - アプリはSIGTRAPでクラッシュします。

アプリがiOS5、iOS5.1でのみクラッシュします。 iOS4.2.1では、すべてが完璧に機能します。

問題が何ですか?何か案は?

+1

例外ブレークポイントを設定したり、例外をトラップすると、メッセージとスタックトレースは何ですか? –

+1

私のcrittercismダッシュボードに表示される内容:https:// docs。 google.com/document/d/1YTec1-gnrIhSUkvt66RcIouwtjgu6HgF2CTQcQ21pCw/editメインスレッドのxcodeに表示される内容は次のとおりです。https://docs.google.com/document/d/1AKLqTYYoTa8TcfRJ6-BEEHnafzT-w6NaV8frvPdoOB8/edit – oadash

答えて

0

ご協力いただきありがとうございます。
それは全く変なバグでした。プロジェクトにはキリル文字の名前が付いています。私はちょうどそれをラテンの名前に変更しましたが、今はすべて正常に動作します。私の欠陥:(助けをEvgeniy Shurakovありがとう)

+0

お元気ですか、この問題について簡単に説明してください。私も同じ問題に直面していますが、キリル文字とラテン文字の違いが得られません。 – Gaurav

+0

それは変です。私の問題は - キリル文字の名前だった。それが私のアプリがクラッシュした理由です。私はプロジェクトをどこにでも名前を変更しました(すべてのプロジェクトファイルを注意深く見て、キリル文字の名前をラテン文字に置き換えます)。 – oadash

1

ドキュメントごとに、MFMailComposeViewControllerを作成する前に[MFMailComposeViewController canSendMail]クラスメソッドを呼び出すことをおすすめします。私はまた、一般にその[self resignFirstResponder]行を持っていません。 mailComposeController:didFinishWithResult:errorメソッドが呼び出される前にクラッシュしていますか?

+0

私はコントローラを作成する前にcanSendMailを実行してください(上記のコードで間違いがありました)ので、ここにコードがあります: 'if([MFMailComposeViewController canSendMail]){ MFMailComposeViewController * picker = [[MFMailComposeViewController alloc] init];' 'resignFirstResponder' - 同じエラー。あなたが正しいです、私は' mailComposeController:didFinishWithの前にクラッシュしていますResult:error'メソッドが呼び出されます。 – oadash

+0

好奇心。そして、 'CFMailComposeViewController'がユーザに提示された時点で、このデリゲートオブジェクトがまだ存在していると確信していますか?あなたが 'CFMailComposeViewController'のデリゲートとして定義したオブジェクトがリリースされていれば、私はいくつかの奇妙なクラッシュを想像することができます(あなたがモーダルビューを提示していてもコードは実行し続けるからです)。おそらくNSLogをあなたの - (void)deallocなどで確認してください。 – Rob

+0

あなたが正しいです、デリゲート( 'self')の'(void)dealloc'メソッドは、詳細ビュー( 'CFMailComposeViewController'のデリゲート)がプッシュされた後に呼び出されます。 iOS4で試してみました - '(void)dealloc'が呼び出されましたが、すべて正常に動作します。 – oadash

関連する問題