2017-03-24 1 views
0

Objective C noob hier. Ich verbinde von einer UITableViewCell mit einer ViewController-Unterklasse. Auf meinem Storyboard habe ich den UIViewController mit dem UITableView sowie eine benutzerdefinierte Klasse SubjectViewController mit dem Bezeichner "Subject".ViewController wird nur einmal geladen, App stürzt ab, wenn ich zurück gehe, dann wieder laden

Ich greife auch den Text in der ausgewählten Zelle, fügen Sie es zu NSUserDefaults hinzu, und verwenden Sie das als Titel der Betreff-Seite.

Wenn ich die App starte, startet der SubjectViewController beim ersten Klick auf eine UITableViewCell einwandfrei. Jede Funktionalität, die ich auf dieser Seite habe, funktioniert gut. Wenn ich jedoch wieder auf den Startbildschirm gehe, dann klicke auf ein anderes UITableViewCell, die App bleibt stehen und ich bekomme nur die Nachricht "11db".

Hier sind die beiden Methoden, die beteiligt sind:

Von 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]; 
} 

Von 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]; 
} 

Lassen Sie mich wissen, wenn mehr Code/Informationen wäre hilfreich und ich werde diesen Beitrag bearbeiten.

+0

Hallo, dies ist nicht, wie Sie einen View-Controller präsentieren und entlassen. Rufen Sie in der Methode "subjectBackPressed" einfach [self disneyViewController:] auf. Und schauen Sie sich an, wie Sie Daten zwischen den View-Controllern in iOS weitergeben können (verwenden Sie einen anderen Browser usw.) – abarbier

+0

Irgendwelche spezifischen Ressourcen, von denen Sie denken, dass sie hilfreich wären? Ich habe Probleme beim Verständnis des Apple Programmierhandbuchs für Entwickler – Nate

+1

Bitte lesen Sie http://www.raywenderlich.com/10209/my-app-crashed-now-what-part-1, um zu erfahren, wie Sie einen Absturz debuggen können. – rmaddy

Antwort

0

Durchführung Wenn der VC1 von der Hauptstoryboard geladen wurde, keine Notwendigkeit, erneut zu initialisieren. Beim Zugriff auf self.storyboard wird die zugewiesene Instanz des Storyboards angezeigt.

Wenn Sie das vc2 präsentieren, sollte es entfernt werden, indem Sie es ablehnen. Zurück Aktion sollte

sein

[self entlassenAnsichtControllerAnimated: YES Abschluss: Nil];

+0

Danke, das hat funktioniert! – Nate

0

Ich würde vorschlagen, entweder die aktuelle Ansicht mit self.dismissViewController Entlassung oder einen Übergangs zurück zum UIViewController

+0

Eine dieser Optionen sollte funktionieren. :) –

Verwandte Themen