使用新数据重新填充TableView

时间:2014-11-11 13:57:54

标签: ios objective-c iphone uitableview

我希望在tableView中添加新数据,请你帮我解决一下。目前mt表中填充了greekLetters和imageNames。在按钮上单击我希望在表中添加新数据:greekLetters2

@interface ViewController2 ()

@end

@implementation ViewController2

- (void)viewDidLoad {
[super viewDidLoad];

self.greekLetters = @[@"BigBen",@"Colosseum",@"EiffelTower",@"GreatWallOfChina",@"StatueofLiberty",@"StBasils",@"Stonehenge",@"TajMahal",@"TowerOfPisa"];
self.imageNames = @[@"BigBen.jpg",@"Colosseum.jpg",@"EiffelTower.jpg",@"GreatWallOfChina.jpeg",@"StatueofLiberty.jpg",@"StBasils.jpg",@"Stonehenge.jpg",@"TajMahal.jpg",@"TowerOfPisa.jpg"];


self.greekLetters2 = @[@"BigBen2",@"Colosseum2",@"EiffelTower2",@"GreatWallOfChina2",@"StatueofLiberty2",@"StBasils2",@"Stonehenge2",@"TajMahal2",@"TowerOfPisa2"];
self.imageNames2 = @[@"BigBen2.jpg",@"Colosseum2.jpg",@"EiffelTower2.jpg",@"GreatWallOfChina2.jpeg",@"StatueofLiberty.jpg",@"StBasils2.jpg",@"Stonehenge2.jpg",@"TajMahal2.jpg",@"TowerOfPisa2.jpg"];
}

- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

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

return [self.greekLetters count];
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *SimpleIdentifier = @"SimpleIdentifier";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SimpleIdentifier];

if (cell == nil)
{
    cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:SimpleIdentifier];
}


UIImage *image = [UIImage imageNamed:self.imageNames[indexPath.row]];

cell.imageView.image = image;
cell.textLabel.text = self.greekLetters[indexPath.row];
cell.textLabel.font = [UIFont boldSystemFontOfSize:30];

if (indexPath.row < 3)
{
    cell.detailTextLabel.text = @"A";
}

else
{
    cell.detailTextLabel.text = @"B";
}

return cell;
}


-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row == 0)
{
    return nil;
}

else
{
    return indexPath;
}
}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *rowValue = self.greekLetters[indexPath.row];
NSString *message = [[NSString alloc] initWithFormat:@"You selsected %@!",rowValue];

UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Row Selected" message:message delegate:nil cancelButtonTitle:@"Yes" otherButtonTitles:nil, nil];

[alert show];

[tableView deselectRowAtIndexPath:indexPath animated:YES];
}

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 70;
}

- (IBAction)SwitchTable:(id)sender
{
 //repapulate
}

@end

3 个答案:

答案 0 :(得分:1)

最简单的方法是在按下按钮时切换两个数组。 greekLetters必须成为greekLetters2和反之亦然。然后,只需重新加载tableview数据。

-(IBAction)SwitchTable:(id)sender {
     NSArray *temp = [NSArray arrayFromArray:greekLetters];
    greekLetters = [NSArray arrayFromArray:greekLetters2];
    greekLetters2 = [NSArray arrayFromArray:temp];
    [tableview reloadData];
}

答案 1 :(得分:0)

只有一个nsmutablearray会驱动你的tableview。如果你的greekLetters数组是nsmutablearray,你会更新它,然后重新加载你的tableview:

[self.greekLetters addObjectsFromArray:self.greekLetters2];
[self.tableView reloadData];

答案 2 :(得分:0)

暂停这两个教程,它们将指导您实现您的目标: - https://www.youtube.com/watch?v=gT8ncroYdDw - https://www.youtube.com/watch?v=NHzm-D9VsQA