我有2 viewcontroller
个 - 一个是tableview
,另一个是普通viewcontroller
。我希望通过使用委托将数据从第二个viewcontroller
传递到tableview
控制器。我在delegatemethod
中创建了一个委托viewcontroller
,并在delegatemethod
控制器中实现了tableview
。问题是我正在向数组中获取数据,但tableview
没有重新加载。为什么呢?
任何人都可以帮忙解决这个问题吗?提前谢谢。
#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;
}
我正在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 :(得分:0)
我认为第一个VC不会重新加载数据,因为它不是可见的VC。当VC出现时尝试reloadData。
-(void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.tableView reloadData];
}