我在下面的代码中会调用模态视图。我在呈现视图控制器时工作正常,但是当我解除它时,它会崩溃
_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
。这可能是个问题吗?
答案 0 :(得分:1)
我将retain
的属性类型从strong
更改为surveySummaryTableView
@property (strong, nonatomic) IBOutlet UITableView *surveySummaryTableView;
并确保将子视图设为weak
或unsafe_unretained
谢谢@JeslyVarghese&大家好!
答案 1 :(得分:0)
由于您正在推送navController,因此您必须忽略它。尝试:
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
OR
[self.parentViewController.navigationController dismissViewControllerAnimated:YES completion:nil];