1

モーダルビューを呼び出す以下のコードがあります。View Controller を表示するときは正常に動作しますが、それを閉じるとクラッシュします

_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

プロパティ タイプをretainからstrongforに変更しましたsurveySummaryTableView

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

そして、必ず子ビューを型weakまたは型にするようにしてくださいunsafe_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 に答える