1

我有下面的代码将调用模态视图。我在呈现视图控制器时工作正常,但是当我关闭它时,它崩溃了

_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. 我可能错过了什么?我尝试了其他人在 SO 中发布的其他建议,但没有运气。提前致谢。

_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"];

===附加信息===

考虑到它在上面的行被注释时起作用,该表实际上填充了一个 custom UITableViewCell。这会是个问题吗?

4

2 回答 2

1

我将属性类型从更改retainstrongforsurveySummaryTableView

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

并确保将子视图设置为类型weakunsafe_unretained

谢谢@JeslyVarghese 和大家!

于 2013-07-19T04:45:47.950 回答
0

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

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

或者

[self.parentViewController.navigationController dismissViewControllerAnimated:YES completion:nil];
于 2013-07-18T03:32:58.883 回答