0

iPad では、iPhone では得られない奇妙な動作がいくつかあります。

セクションとセクションのヘッダーを持つグループ化されたテーブル ビューがあります。問題は、iPad で一番上のセクションのヘッダーが表示されないことです。テーブルを下にスクロールすると、セクション ヘッダーが画面に移動する直前に少しの間表示されます。

スクロール前

http://desmond.imageshack.us/Himg525/scaled.php?server=525&filename=screenshot2012051410074.png&res=landing http://desmond.imageshack.us/Himg525/scaled.php?server=525&filename=screenshot2012051410074.png&res=landing

スクロール後

http://desmond.imageshack.us/Himg59/scaled.php?server=59&filename=screenshot2012051410074.png&res=landing http://desmond.imageshack.us/Himg59/scaled.php?server=59&filename=screenshot2012051410074.png&res=landing

セクションのヘッダーを作成するコード:

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{
    NSString *sectionTitle = [self tableView:tableView titleForHeaderInSection:section];
    if (sectionTitle == nil || [sectionTitle isEqualToString:@""]) {
        return nil;
    }

    // Create label with section title
    UILabel *label = [[UILabel alloc] init] ;
    label.frame = CGRectMake(12, 0, 300, 30);
    label.backgroundColor = [UIColor clearColor];
    label.textColor = [UIColor blackColor];
    label.shadowColor = [UIColor whiteColor];
    label.shadowOffset = CGSizeMake(0.0, 1.0);
    label.font = [UIFont boldSystemFontOfSize:16];
    label.text = sectionTitle;

    UIImage *img = [UIImage imageNamed:@"header"];
    UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 0, 300, 44)];
    imgView.image = img;

    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 44)];

    [view addSubview:imgView];
    [view addSubview:label];

    return view;
}

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    int aSection = [[self.sectionsToDisplay objectAtIndex:section] integerValue];
    return [self.groupHeadings objectAtIndex:aSection];
}

私のTableViewのコード:

tableViewResult = [[UITableView alloc] initWithFrame:mainView.frame style:UITableViewStyleGrouped];

tableViewResult.separatorColor = [UIColor clearColor];
[mainView addSubview:tableViewResult];

テーブルにデータをロードする前に最初に Web 要求を実行するとき、つまり、Web 要求が完了したときに次のようにします。

tableViewResult.delegate = self;
tableViewResult.dataSource = self;
[tableViewResult reloadData];

一番上のセクションのヘッダーを除いて、すべてが期待どおりに機能し、iPad でのみ機能します。

この動作を引き起こす可能性のあるアイデアはありますか?

4

1 に答える 1

0

問題を修正したのは、この関数を次のように変更することでした:

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    int aSection = [[self.sectionsToDisplay objectAtIndex:section] integerValue];
    if([[self.groupHeadings objectAtIndex:aSection] isEqualToString:@""])
        return nil;
    return [self.groupHeadings objectAtIndex:aSection];
}
于 2012-05-15T06:28:03.990 に答える