TableView Daten an Detail View pushen ohne Storyboard

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • TableView Daten an Detail View pushen ohne Storyboard

    Hallo,

    ich versuche meine Daten aus der TableView an eine Detailview zu übergeben. Leider funktioniert das Ganze noch nicht und ich wäre für jeden Rat dankbar.

    Meine DetailView soll noch einfach die Labels "nameLabels" und "sectionLabels" anzeigen.
    Also habe ich für die beiden Labels ein IBOutlet in der CeckDetailViewController angelegt:

    Quellcode

    1. #import <UIKit/UIKit.h>
    2. @interface CeckDetailViewController : UIViewController
    3. @property (weak, nonatomic) IBOutlet UILabel *nameLabel;
    4. @property (weak, nonatomic) IBOutlet UILabel *sectionLabel;
    5. @end


    Die CeckDetailViewController Datei sieht wie folg aus:

    Quellcode

    1. @implementation CeckDetailViewController
    2. @synthesize nameLabel, sectionLabel;
    3. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    4. {
    5. self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    6. if (self) {
    7. // Custom initialization
    8. }
    9. return self;
    10. }
    11. - (void)viewDidLoad
    12. {
    13. [super viewDidLoad];
    14. }
    Alles anzeigen



    In meinem RootController ChecklistViewController habe ich die Header Datei importiert und versuche die Labels zu befühlen:

    Quellcode

    1. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    2. {
    3. NSLog(@"Auswahl ");
    4. CeckDetailViewController *checkDetailViewController = [[CeckDetailViewController alloc]
    5. initWithNibName:@"CeckDetailViewController"
    6. bundle:nil];
    7. //Befüllen der Propertys
    8. checkDetailViewController.nameLabel.text = @"NameTest";
    9. checkDetailViewController.sectionLabel.text = @"SectionTest";
    10. [self.navigationController pushViewController:checkDetailViewController animated:YES];
    11. }
    Alles anzeigen



    Leider sind die Labels aber nicht geändert?

    hat mir jemand einen Tipp?

    Danke

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von schneimi ()

  • Dann ist es wahrscheinlich noch zu früh direkt nach dem init. Du solltest also eine "normale" property NSString anlegen der du den Text nach dem Init gibst und dann erst im viewDidLoad diesen Text an das Label übergeben. Du kannst auch, um es schöner zu machen eine eigene Methode

    Quellcode

    1. -(id)initWithNibName:(NSString*)nibName bundle:(NSBundle*)bundle Name:(NSString*)name Section:(NSString*)section


    schreiben.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Hallo,

    ja genau das war es, super.

    Hier mal noch die Lösung:

    Property in der CeckDetailViewController:

    Quellcode

    1. @property (strong, nonatomic) NSString* myText;


    dann in dem RootViewController den String setzten:

    Quellcode

    1. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    2. {
    3. NSLog(@"Auswahl ");
    4. CeckDetailViewController *checkDetailViewController = [[CeckDetailViewController alloc]
    5. initWithNibName:@"CeckDetailViewController"
    6. bundle:nil];
    7. //Befüllen der Propertys
    8. checkDetailViewController.myText = @"blabla";
    9. [self.navigationController pushViewController:checkDetailViewController animated:YES];
    10. }
    Alles anzeigen


    und im DetailVIewController noch den Wert setzten:

    Quellcode

    1. -(void)viewWillAppear:(BOOL)animated{
    2. self.nameLabel.text = myText;
    3. }



    Danke