我正在使用UIActionSheet来选择选项。相同的代码在iOS 7中运行良好,但问题出现在iOS 8中。
actionSheet = [[UIActionSheet alloc] initWithTitle:@"Choose an option" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:Nil otherButtonTitles:@"Option1", @"Option2", @"Option2", nil];
在IBAction上,我使用以下代码显示操作表。
[actionSheet showInView:[self view]];
第一次工作正常。但是第二次由于EXE_BAD_ACCESS,应用程序崩溃了
答案 0 :(得分:0)
鼓励@TonyMkenu
的评论我在下面做,这是有效的。
完成dismissViewControllerAnimated后,我发布了动作表。
[self dismissViewControllerAnimated:YES completion:^{
actionSheet =nil;
}];
在致电之前,我每次都分配了行动表。
if(! actionSheet)
actionSheet = [[UIActionSheet alloc] initWithTitle:@"Choose an option" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:Nil otherButtonTitles:@"Option1", @"Option2", @"Option2", nil];
[actionSheet showInView:[self view]];
答案 1 :(得分:0)
如果代码不在viewcontroller中,你可能只是让视图的窗口始终是keywindow。
[actionSheet showInView:[self view]];
[self.view.window makeKeyAndVisible];
答案 2 :(得分:-2)
你应该在iOS 8中使用UIAlertController,因为UIActionSheet和UIAlertView已被它取代。它非常简单并且可以使用块。这是您可以使用的示例。
- (IBAction)actionButtonAction:(id)sender {
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Select an action" message:nil preferredStyle:UIAlertControllerStyleActionSheet];
// These next two lines are necessary for iPad and wide layouts.
alertController.popoverPresentationController.sourceView = self.view;
alertController.popoverPresentationController.sourceRect = CGRectMake(self.view.bounds.size.width - 34, 20, 0, 0);
[alertController addAction:[UIAlertAction actionWithTitle:@"Share Data" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
// Do action Share data
}]];
[alertController addAction:[UIAlertAction actionWithTitle:@"Share Plot" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
// Do action Share Plot
}]];
[alertController addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
// User cancelled
}]];
[self presentViewController:alertController animated:YES completion:^{
}];
}