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 将保持 Messenger 分配或在某个线程中运行,因此为它初始化视图控制器会很快。

于 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 回答