2011-10-18 6 views
1

ああ私は苦労しています - iOS 5が私のアプリケーションを壊しました。iOS 5 UITableViewのシーケンスの変更 - viewForHeaderInSectionとheightForHeaderInSectionの切り替え

私はのUITableViewと前のiOS 5に、 に私を許可(私は動的に私の ヘッダビューを作成することができ)viewForHeaderInsection

  • heightForHeaderInSection(

    1. 順番に呼び出さデリゲートを持っていますヘッダビューの調整後の高さを指定してください

    私はちょうど今チェックして、iOS 4.3シミュレータとiOS 5.0シミュレータ(およびiOS 5デバイス)でプログラムを実行しました。正確に同じコードがiOS5の逆の順序で呼び出されます。なぜ !!!!

    のtableViewのためのドキュメントの状態(:heightForHeadInSection :)前テーブルビューが自動的にtableViewセクション0にヘッダーの高さのサイズを変更することになるのiOS 5.0、に

    "特別な考慮事項

    :viewForHeaderInSectionに: iOS 5.0以降では、この方法で各セクションヘッダーの実際の高さを返す必要があります。

    コールの順序を静かに変更したことはありません。

    私の質問:これを誰もが遭遇し、これを解決するための提案はありますか?私はすべてをコード化しますか?ヘッダービューを作成したときにしか高さを知ることができない可変高さのヘッダーが必要です。

  • 答えて

    1

    はい私は同じ動作を観察します。 tableView:heightForHeadInSectionにヘッダービューを作成し、それを2回作成する代わりにviewForHeaderInsectionに再利用します。

    5.0より前のバージョンでは、ビューの作成後に高さがわかっている場合は、heightForRowAtIndexPathcellForRowAtIndexPathについて同様のことを行う必要があります。 nilを返すとき

    //のiOS 5以降まだ高さを期待し

    - (CGFloat)のtableView:

    1

    はちょうどそれを修正するために、このような何かを追加(のUITableView *)のtableView heightForHeaderInSection:(NSInteger)セクション{

    // Do some check on if this section has a header 
    if ([navigationSections_[section] hasHeader]) { 
        return 0; 
    } else { 
        // This will use the default height 
        return tableView.sectionHeaderHeight; 
    } 
    

    }

    関連する問題