我有一个带有保存按钮的UIViewController
。当我单击它时,我将一个字符串添加到UITableViewController
中的数组。我有一个segue,然后转到表视图,我希望数组中的新对象显示为表中的一行。
如何从视图控制器获取数据以显示在表视图控制器上? 我正在做的事情不起作用。
的UIViewController:
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([[segue identifier] isEqualToString:@"showFindTable"])
{
FindTableViewController *findTableVC = [segue destinationViewController];
findTableVC.titles addObject:titleField.text];
[findTableVC.tableView reloadData];
}
}
的UITableViewController:
- (void)viewDidLoad
{
[super viewDidLoad];
self.titles = [[NSMutableArray alloc] init];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"FindCell";
FindTableCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell.title.text = [self.titles objectAtIndex:[indexPath row]];
return cell;
}
在表视图控制器内部,我初始化数组。所以当我添加对象时,它只是在调用viewDidLoad
时恢复为空数组?我计划最终使用Core Data持久保存数据。所以我认为如果这是问题就能解决它。在那之前,我怎么能让它发挥作用?
我尝试用一个字符串初始化title数组。该字符串显示。所以看起来确实如此,因为每次加载表视图时我都会重新初始化数组。我/我应该在哪里初始化阵列?
答案 0 :(得分:0)
在我的项目中,我这样使用
要将数据添加到单元格的类的Crete对象,如下所示。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"WhatsNewCell";
WhatsNewCell *cell = (WhatsNewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
//if (nil == cell)
{
cell = [[WhatsNewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] ;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
return cell;
}
但是WhatsNewCell是 UITableViewCell 的子类 并在该类中创建方法并添加类似
- (void)createCellLabels
{
albumNameLabel = [[UILabel alloc] initWithFrame:CGRectMake(15.0, 5.0, 200.0, 50.0)];
albumNameLabel.textAlignment = UITextAlignmentLeft;
albumNameLabel.textColor = [UIColor colorWithRed:0.14 green:0.29 blue:0.42 alpha:1];
albumNameLabel.font = [UIFont boldSystemFontOfSize:15.0];
albumNameLabel.backgroundColor = [UIColor clearColor];
[self.contentView addSubview:albumNameLabel];
artistNameLabel = [[UILabel alloc] initWithFrame:CGRectMake(15.0, 28.0, 200.0, 50.0)];
artistNameLabel.textAlignment = UITextAlignmentLeft;
artistNameLabel.textColor = [UIColor grayColor];
artistNameLabel.font = [UIFont boldSystemFontOfSize:12.0];
artistNameLabel.backgroundColor = [UIColor clearColor];
[self.contentView addSubview:artistNameLabel];
genresLabel1 = [[UILabel alloc] initWithFrame:CGRectMake(5.0, 0.0, 200.0, 25.0)];
genresLabel1.textAlignment = UITextAlignmentLeft;
genresLabel1.textColor = [UIColor colorWithRed:0.14 green:0.29 blue:0.42 alpha:1];
genresLabel1.font = [UIFont boldSystemFontOfSize:15.0];
genresLabel1.backgroundColor = [UIColor clearColor];
[self.contentView addSubview:genresLabel1];
}
可能对你有所帮助。
答案 1 :(得分:0)
您可以使用委托:
ViewController.h(声明委托)
@protocol delegateName <NSObject>
- (void)prepareForSegue:(NSString)strToAdd;
@end
ViewController.m
- (void)save:(id)sender {
[delegete prepareForSegue:titleField.text];
}
的UITableViewController
- (void)prepareForSegue:(NSString)strToAdd {
[self.title addObject:strToAdd];
[self.tableView reloadData];
}