iOS:dismissViewControllerAnimated在执行时崩溃

时间:2013-07-18 03:23:17

标签: ios objective-c

我在下面的代码中会调用模态视图。我在呈现视图控制器时工作正常,但是当我解除它时,它会崩溃

_surveySummaryTableViewController = [[UITableViewController alloc] initWithStyle:UITableViewStyleGrouped];
[_surveySummaryTableViewController setTableView:_surveySummaryTableView];

UIBarButtonItem *doneItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(closeModalView:)];
[[_surveySummaryTableViewController navigationItem] setRightBarButtonItem:doneItem];
[[_surveySummaryTableViewController navigationItem] setTitle:@"Response Summary"];

navController = [[UINavigationController alloc]initWithRootViewController:_surveySummaryTableViewController];
[navController setModalPresentationStyle:UIModalPresentationFormSheet];
[navController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];

....

[self presentViewController:navController animated:YES completion:nil];

点击模态视图上的DONE按钮将调用以下closeModalView:方法:

- (void)closeModalView:(id)sender
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

奇怪的是,当我在下面注释掉这一行时,解雇工作正常。但事实上,如果没有任何TableView,视图将为空。我能错过什么?我尝试了其他人发布的其他建议,但没有运气。提前谢谢。

_surveySummaryTableViewController = [[UITableViewController alloc] initWithStyle:UITableViewStyleGrouped];
//[_surveySummaryTableViewController setTableView:_surveySummaryTableView]; //This line commented out

UIBarButtonItem *doneItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(closeModalView:)];
[[_surveySummaryTableViewController navigationItem] setRightBarButtonItem:doneItem];
[[_surveySummaryTableViewController navigationItem] setTitle:@"Response Summary"];

===其他信息===

考虑到上述行被评论时,该表实际上填充了自定义UITableViewCell。这可能是个问题吗?

2 个答案:

答案 0 :(得分:1)

我将retain的属性类型从strong更改为surveySummaryTableView

@property (strong, nonatomic) IBOutlet UITableView *surveySummaryTableView;

并确保将子视图设为weakunsafe_unretained

类型

谢谢@JeslyVarghese&大家好!

答案 1 :(得分:0)

由于您正在推送navController,因此您必须忽略它。尝试:

[self.navigationController  dismissViewControllerAnimated:YES completion:nil];

OR

[self.parentViewController.navigationController dismissViewControllerAnimated:YES completion:nil];