0

テーブルビューでカスタムセクションヘッダークラ​​スを使用していますが、回転後に予期しない動作が発生します。ユースケースは次のとおりです。

  1. UITableViewのセルをタップします
  2. ビューがスタックにプッシュされました。
  3. ビューを横向きに回転します。
  4. 縦向きに戻します。
  5. ビューをポップします。
  6. iPhone 3Gの場合のみ、横向きのセクションヘッダーがビューの中央のどこかに貼り付けられて表示されるようになりました(縦向きのセクションヘッダーは、当然のことながら、テーブルビューの上部に表示されます)。無関係なヘッダーはUITableViewセルとともにスクロールし、ビューから離れたりビューに戻ったり(UITableViewはUITabBarController内にネストされています)、問題は解決しません。

この問題をiPhone4またはシミュレータで再現することはできません。何らかの理由で、第2レベルのビューをポップした後、横向きのセクションヘッダービューがuitableviewに追加されているようですが、これはなぜですか?デフォルトの(カスタムではない)ヘッダーを使用すると、同じ問題が再現されることに注意してください。また、デバイスの向きが正しく返されないという問題があるかどうかも確認しましたが、そうではないようです。

役立つ場合は、カスタムSectionHeaderViewクラスの初期化コードを次に示します。

-(id)initWithFrame:(CGRect)frame title:(NSString*)title delegate:(id <SectionHeaderViewDelegate>)aDelegate {

self = [super initWithFrame:frame];

if (self != nil) {

    float lineHeight = 0.5f;
    // check line sizing for retina/non-retina
    if (![Utilities hasRetina])
    {
        lineHeight = 1.0f;
    }

    // Set up the tap gesture recognizer.
    delegate = aDelegate;        

    // Create and configure the title label.
    CGRect titleLabelFrame = self.bounds;
    titleLabelFrame.origin.y -= 12.5;
    titleLabel = [[UILabel alloc] initWithFrame:titleLabelFrame];
    titleLabel.text = title;
    titleLabel.textAlignment = UITextAlignmentCenter;
    titleLabel.font = [UIFont fontWithName:@"Georgia" size:15.0];
    titleLabel.textColor = [UIColor whiteColor];
    titleLabel.backgroundColor = [UIColor clearColor];
    [self addSubview:titleLabel];

    // add thin white line to top of section header
    UIView *topBorder = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.bounds.size.width, lineHeight)];
    [topBorder setBackgroundColor:[UIColor whiteColor]];
    [self addSubview:topBorder];
    [topBorder release];

    // Set the colors for the gradient layer.
    static NSMutableArray *colors = nil;
    if (colors == nil) {
        colors = [[NSMutableArray alloc] initWithCapacity:3];
        UIColor *color = nil;
        color = [UIColor colorWithRed:57.0/255.0 green:56.0/255.0 blue:105.0/255.0 alpha:1.0];
        [colors addObject:(id)[color CGColor]];
        color = [UIColor colorWithRed:54.0/255.0 green:53.0/255.0 blue:95.0/255.0 alpha:1.0];
        [colors addObject:(id)[color CGColor]];
        color = [UIColor colorWithRed:57.0/255.0 green:56.0/255.0 blue:105.0/255.0 alpha:1.0];
        [colors addObject:(id)[color CGColor]];
    }
    [(CAGradientLayer *)self.layer setColors:colors];
    [(CAGradientLayer *)self.layer setLocations:[NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0], [NSNumber numberWithFloat:0.48], [NSNumber numberWithFloat:1.0], nil]];
}

return self;
}

iPhone 3Gでのみ、カスタムSectionHeaderViewの横向きバージョンが縦向きビューに追加されるのはなぜですか?

助けてくれてありがとう。

4

1 に答える 1

0

この問題の原因はまだわかりませんが、viewWillAppearにチェックを追加して、古いヘッダーが削除されたことを確認することで、最終的に解決しました。

于 2012-04-20T08:45:25.503 に答える