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
Ich denke, Sie müssen Tableview von View Controller selbst neu laden ... Von wo Sie Daten senden. –