1

カスタムセルを持つ 2 つの UITableView があり、奇妙な動作に直面しています。

テーブルは新しいレコードで定期的に更新されます。テーブル#1 に 20 レコードを追加しますが、テーブル#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
4

1 に答える 1

0

他のサイトでは、テーブルビューの更新レコードに reloadData の代わりに beginUpdates - endUpdates を使用するように提案されました。すべての作品。

于 2013-04-10T09:09:57.227 に答える