2017-03-24 4 views
0

ここに目的の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]; 
} 

から、より多くのコード/情報が参考になるなら、私を知ってみましょうこの投稿を編集します。

+0

こんにちは、これは、表示コントローラを表示および非表示にする方法ではありません。 subjectBackPressedメソッドで[self dismissViewController:]を呼び出してください。そして、iOSのビューコントローラ間でデータをやりとりする方法を見てください。(セグなどを使用してください) – abarbier

+0

参考になると思われるリソースはありますか?アップルのデベロッパー向けプログラミングガイドを理解できません。 – Nate

+1

クラッシュをデバッグする方法については、http://www.raywenderlich.com/10209/my-app-crashed-now-what-part-1を参照してください。 – rmaddy

答えて

0

へのセグエを実行するのいずれかを示唆しています。 self.storyboardにアクセスするだけで、ストーリーボードの割り当てられたインスタンスが得られます。

vc2を表示している場合は、削除する必要があります。戻るアクションは、

[self dismissViewControllerAnimated:YES完了:nil]である必要があります。

+0

ありがとう、これは働いた! – Nate

0

私はself.dismissViewControllerと現在のビューを却下またはVC1がメインストーリーボード、再び初期化する必要はありませんからロードされた場合は、バックのUIViewController

+0

これらのオプションの1つが有効です。 :) –

関連する問題