如何使用if语句检测选择了哪些UIPickerView行

时间:2012-07-03 08:12:22

标签: if-statement xcode4.2 uipickerview

我已经制作了一个按钮,当用户按下该按钮并选择特定行时,它会执行某些操作。 到目前为止,我有这个:

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

它独立运作。但是,当我多次执行if语句时,它会崩溃。 一种使其有效的方法?

感谢任何帮助,感谢。

2 个答案:

答案 0 :(得分:0)

问题可能在于您的邮件编辑器,而不是选择器视图。当您显示作曲家时,请确保仅在尚未创建的情况下创建它。

此外,请确保在显示后将其释放:

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

...[configure the picker]

[rootContainer presentModalViewController:picker animated:YES];

[picker release];

答案 1 :(得分: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");}];

这将执行单个方法调用,而不是不断地重新分配哪些因某些奇怪的原因导致您的异常。从iOS 6.0开始,presentModalViewController:animated:已被弃用?如果不是7.0我相信。

请注意!使消息控制器成为主视图控制器的属性。这是一个很好的做法,因此如果你需要重新启动,它不会被iOS自动发布。但是,如果您使用MFMessageComposer,iOS会在某个地方保留信使的分配或运行,因此可以快速初始化视图控制器。