ここに目的のCのnoobがあります。私はUITableViewCellからViewControllerサブクラスにリンクしています。私のストーリーボードには、UITableViewを含むUIViewControllerと、 "Subject"という識別子を持つカスタムクラスSubjectViewControllerがあります。ViewControllerは一度だけロードされ、私が戻って再びロードするとアプリがクラッシュする
また、選択したセルに含まれているテキストを取得し、それをNSUserDefaultsに追加し、それをSubjectページのタイトルとして使用します。
私がUITableViewCellを初めてクリックすると、アプリケーションを起動すると、SubjectViewControllerが完全に起動します。そのページにある機能は正常に動作します。しかし、ホーム画面に戻り、別のUITableViewCellをクリックすると、アプリケーションがフリーズし、メッセージ「11db」のみが表示されます。ここで
が関与している2つの方法です:
ViewController.m
から- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
// Store cell label in NSUserDefaults to later display as the title
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
NSString *cellID = cell.textLabel.text;
[defaults setObject:cellID forKey:@"sceneTitle"];
[defaults synchronize];
//Present subjects view controller
NSString * storyboardName = @"Main";
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];
SubjectViewController * subject = [storyboard instantiateViewControllerWithIdentifier:@"Subject"];
[self presentViewController:subject animated:YES completion:nil];
}
SubjectViewController.m
- (IBAction)subjectBackPressed:(id)sender {
NSString *storyboardName = @"Main";
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];
NSString *home = @"Head and Neck";
SubjectViewController * vc = [storyboard instantiateViewControllerWithIdentifier: home];
[self presentViewController:vc animated:YES completion:nil];
}
から、より多くのコード/情報が参考になるなら、私を知ってみましょうこの投稿を編集します。
こんにちは、これは、表示コントローラを表示および非表示にする方法ではありません。 subjectBackPressedメソッドで[self dismissViewController:]を呼び出してください。そして、iOSのビューコントローラ間でデータをやりとりする方法を見てください。(セグなどを使用してください) – abarbier
参考になると思われるリソースはありますか?アップルのデベロッパー向けプログラミングガイドを理解できません。 – Nate
クラッシュをデバッグする方法については、http://www.raywenderlich.com/10209/my-app-crashed-now-what-part-1を参照してください。 – rmaddy