2013-04-08 5 views
1

У меня есть два UITableView с пользовательскими ячейками, и я столкнулся с странным поведением.Несколько UITableView с пользовательскими ячейками. Не работает прокрутка

Таблицы периодически обновляются новыми записями. Я добавляю 20 записей в таблицу # 1, а таблица №2 все еще пуста. Все записи не помещаются на экране, поэтому таблица отображается с прокруткой. Затем я добавляю запись в таблицу №2, а таблица № 1 перестает прокручиваться (вы можете видеть только первые несколько записей, которые поместились на экране).

После перезагрузки данных для таблицы №1 проблема исчезает.

Когда ячейки не настроены, у меня нет проблем с прокруткой.

#import "MyViewController.h" 
#import "MyCell1.h" 

@implementation MyViewController 
@synthesize table1, table2; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    viewList = [NSMutableArray array]; 
    viewMemory = [NSMutableArray array]; 

    [table1 setDataSource:self]; 
    [table2 setDataSource:self]; 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    NSInteger num = 0; 

    if ([tableView tag] == 1980) { 
     num = [viewList count]; 
    } 
    else if ([tableView tag] == 1981) { 
     num = [viewMemory count]; 
    } 

    return num; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    MyCell1 *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"]; 
    NSString *someText; 

    if (!cell) { 
     cell = (MyCell1*)[[[NSBundle mainBundle] loadNibNamed:@"Cell1"owner:self options:nil] objectAtIndex:0]; 
    } 

    if ([tableView tag] == 1980) { 
     someText = [viewList objectAtIndex:indexPath.row]; 
    } 
    else if ([tableView tag] == 1981) { 
     someText = [viewMemory objectAtIndex:indexPath.row]; 
    } 

    [[cell value] setText:someText]; 

    return cell; 
} 

- (IBAction)ButtonClick:(UIButton *)sender { 
    if ([sender tag] == 1980) { 
     [viewList addObject:@"0000"]; 
     [[self table1] reloadData]; 
    } 
    else if ([sender tag] == 1981) { 
     [viewMemory addObject:@"1111"]; 
     [[self table2] reloadData]; 
    } 
} 

@end 

ответ

0

На другом сайте я предложил использовать beginUpdates - endUpdates вместо reloadData на обновления записей в tableviews. Все работает.

Смежные вопросы