0

ユーザーがボタンを押して特定の行が選択されたときに何かを実行するようにボタンを作成しました。これまでのところ、私はこれを持っています:

if (pickerView selectedRowInComponent:0) {
                    [mailComposerTwo setToRecipients:[NSArray arrayWithObjects:@"email@blah.com",nil]];
                }

それはそれ自体で動作します。しかし、if ステートメントを複数回実行すると、クラッシュします。それを機能させる方法は?

どんな助けでも感謝します、ありがとう。

4

2 に答える 2

0
NSArray *finalList = [[NSArray alloc]init];
//put all your if statements
if (pickerView selectedRowInComponent:0)
{
     [finalList arrayByAddingObjectsFromArray:@[@"email@address.com",@"second@address.com",...];
}
if (pickerView selectedRowInComponent:1)
{
     [finalList arrayByAddingObjectsFromArray:@[@"another@address.com",@"fourth@address.com",...];
}
//end of if statements
[mailComposerTwo setToRecipients:finalList];
[self presentViewController:yourInitializedMessageController animated:YES completion:^{NSLog(@"message controller is presented");}];

これにより、何らかの奇妙な理由で例外を引き起こしている継続的な再割り当てではなく、単一のメソッド呼び出しが実行されます。presentModalViewController:animated:は iOS 6.0 で廃止されましたか? そうでない場合は 7.0 だと思います。

ノート!メッセージ コントローラーをメイン ビュー コントローラーのプロパティにします。バックアップする必要がある場合に、iOS によって自動解放されないようにすることをお勧めします。ただし、MFMessageComposer を使用すると、iOS はメッセンジャーをどこかのスレッドで割り当てたり実行したりできるため、View Controller を初期化するのは簡単です。

于 2014-05-09T08:11:34.960 に答える
0

問題はおそらく、ピッカー ビューではなく、メール コンポーザーにあります。コンポーザーを表示するときは、まだ作成していない場合にのみ作成するようにしてください。

また、表示した後は必ずリリースしてください。

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;

...[configure the picker]

[rootContainer presentModalViewController:picker animated:YES];

[picker release];
于 2012-07-18T21:04:14.790 に答える