2014-11-11 5 views
-1

У меня есть новые данные, которые я хочу поместить в свой рабочий стол, не могли бы вы помочь мне в этом. В настоящее время таблица mt заполнена greekLetters и imageNames. На кнопке мыши я хочу поставить новые данные в таблице: greekLetters2Repopulate TableView с новыми данными

@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 
+0

источника данных изменения и перезагрузить tableview.Use reloadrowsatindexpaths, если вы хотите, чтобы перезагрузить только выбранные строки – amar

ответ

1

Самый простой способ, чтобы переключить два массива при нажатии кнопки. greekLetters должен стать greekLetters2 и наоборот. Затем просто перезагрузите данные таблицы.

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

Только один NSMutableArray, который будет управлять вашей TableView. Если greekLetters массив будет NSMutableArray вы бы обновить его, а затем перезагрузить TableView:

[self.greekLetters addObjectsFromArray:self.greekLetters2]; 
[self.tableView reloadData]; 
Смежные вопросы