2017-11-17 1 views
0

Ich habe 2 viewcontroller s - man ist ein tableview und der andere ist ein normaler viewcontroller. Ich möchte Daten von der zweiten viewcontroller zu einem tableview Controller mit Delegaten übergeben. Ich habe einen Delegierten und delegatemethod in viewcontroller erstellt und implementiert delegatemethod in der tableview Controller. Das Problem ist, dass ich Daten in das Array bekomme, aber tableview wird nicht neu geladen. Warum?Wie Daten vom zweiten Viewcontroller zu Tableviewcontroller mit Delegaten übergeben werden

Kann jemand mit diesem Problem helfen? Danke im Voraus.

#import "TableViewController.h" 

     @interface TableViewController()<name>{ 

      NSMutableArray *data; 
     } 

     @end 

     @implementation TableViewController 

     - (void)viewDidLoad { 
      [super viewDidLoad]; 
      data = [NSMutableArray array]; 
      [self.tableView reloadData]; 
     } 

     - (IBAction)callingSecondView:(id)sender { 

      UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]]; 
      ViewController *var = [storyboard instantiateViewControllerWithIdentifier:@"vc"]; 
      var.delegate = self; 
      [self.navigationController pushViewController:var animated:YES]; 
     } 
     -(void)getdata:(NSString *)name{ 

      [data addObject:name]; 
      [self.tableView reloadData]; 

     } 
     #pragma mark - Table view data source 

     - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 

      return 1; 
     } 

     - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 

      return [data count]; 
     } 
     - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
      UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath]; 

      if (cell != nil) { 
       cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"]; 

      } 
      cell.textLabel.text = [data objectAtIndex:indexPath.row]; 
      return cell; 
     } 

Und ich schaffe Delegierten ein Objekt und Protokoll in ViewController.h

 #import <UIKit/UIKit.h> 

     @protocol name <NSObject> 

     -(void)getdata : (NSString *)name; 

     @end 


     @interface ViewController : UIViewController 
     @property (strong, nonatomic) IBOutlet UITextField *txt; 
     - (IBAction)done:(id)sender; 

     @property(nonatomic,retain) id<name> delegate; 

ViewController.m

 #import "ViewController.h" 

     @interface ViewController() 

     @end 

     @implementation ViewController 
     @synthesize delegate; 
     - (void)viewDidLoad { 
      [super viewDidLoad]; 

     } 
     - (IBAction)done:(id)sender { 

      [delegate getdata:self.txt.text]; 
      [self.navigationController popToRootViewControllerAnimated:YES]; 

     } 
     @end 
+0

Ich denke, Sie müssen Tableview von View Controller selbst neu laden ... Von wo Sie Daten senden. –

Antwort

0

ich denke, die erste VC nicht reload, weil es nicht das sichtbare VC ist. Versuchen Sie ReloadData, wenn der VC wirdAppear.

Verwandte Themen