我正在使用UITabBarController构建简单的数据添加应用程序,来自firstviewcontroller的数据通过customcell存储并显示在secondviewcontroller,但问题是存储的数据不显示当我从选项卡选择secondviewcontroller。如何解决这个问题?
下面是FirstViewController传递dataarray到secondviewcontroller的代码。
SecondViewController *svc = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil];
[self presentModalViewController:svc animated:YES];
finalArray = [[NSMutableArray alloc]init];
[finalArray addObject:DataDic];
svc.dataArray = [[NSMutableArray alloc]initWithArray:finalArray];
}
和Secondcontroll。M文件编码。
#import "SecondViewController.h"
#import "SaveDataCell.h"
@implementation SecondViewController
@synthesize Dict1,dataArray,btninfo,btnBack;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.title = NSLocalizedString(@"Second", @"Second");
self.tabBarItem.image = [UIImage imageNamed:@"second"];
}
return self;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
Dict1 = [[NSMutableDictionary alloc]init];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
// dataArray = [[NSMutableArray alloc]init];
NSLog(@"%@",dataArray);
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
}
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
}
- (NSInteger)numbe
rOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableVi
ew:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return[dataArray count];
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 150;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"CatIdentifier";
SaveDataCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = ( SaveDataCell*)[[[NSBundle mainBundle] loadNibNamed:@"SaveDataCell" owner:self options:nil] objectAtIndex:0];
}
cell.lblName.text = [[dataArray objectAtIndex:indexPath.row]valueForKey:@"Name"];
cell.lblEmail.text = [[dataArray objectAtIndex:indexPath.row]valueForKey:@"Email"];
cell.lblNo.text = [[dataArray objectAtIndex:indexPath.row]valueForKey:@"No"];
cell.lblCity.text = [[dataArray objectAtIndex:indexPath.row]valueForKey:@"City"];
cell.saveimg.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@",[[dataArray valueForKey:@"Image"]objectAtIndex:indexPath.row]]];
return cell;
}
-(IBAction)ClicktoBack:(id)sender
{
[self dismissModalViewControllerAnimated:YES];
}
-(IBAction)ClicktoInfo:(id)sender
{
}
你可以通过几个方法在视图控制器之间传递数据。
//for lowerVersions:
SecondViewController *tmpNamesListVC = [self.tabBarController.viewControllers objectAtIndex:1];
[tmpNamesListVC yourArray]= self.arraytoPass;
//更高版本
SecondViewController *tmpNamesListVC = [self.tabBarController.viewControllers objectAtIndex:2];
[tmpNamesListVC yourArray]= self.arraytoPass;
你必须改变你的编码顺序
SecondViewController *svc = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil];
finalArray = [[NSMutableArray alloc]init];
[finalArray addObject:DataDic];
svc.dataArray = [[NSMutableArray alloc]initWithArray:finalArray];
[self presentModalViewController:svc animated:YES];
try this:
SecondViewController *svc = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil];
finalArray = [[NSMutableArray alloc]init];
[finalArray addObject:DataDic];
svc.dataArray = [[NSMutableArray alloc]initWithArray:finalArray];
[self presentModalViewController:svc animated:YES];
在你的SecondViewController中创建一个属性。如下所示:-
@property(strong,nonatomic)NSMutableArray * array;
和"@synthesize" it in "。m"文件。
现在当你从"FirstViewController"导航…这样做:-
SecondViewController *svc = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil];
finalArray = [[NSMutableArray alloc]init];
[finalArray addObject:DataDic];
svc.array = finalArray
[self presentModalViewController:svc animated:YES];