web-dev-qa-db-ja.com

UITableViewのヘッダーをプログラムで削除し、コンテンツのサイズを自動的に変更して、削除された領域を埋めます

InterfaceBuilderを介してUIButtonのヘッダーセクションにUITableViewを追加しましたが、場合によってはボタンへのアクセスを削除したいと思います。 .hidden = TRUEプロパティを使用しようとしましたが、ボタンがビューから非表示になり、空白が残ります。プログラムでUITableViewのヘッダーを削除し、テーブルのコンテンツを自動的にサイズ変更して、削除されたヘッダー領域を埋めるにはどうすればよいですか?

18
code007

テーブルのヘッダービューを削除する場合は、myTable.tableHeaderViewプロパティをnilに設定するだけです。実際にセクションヘッダーがある場合は、viewForHeaderInSectionメソッドからnilを返し、[myTableViewreloadData]を呼び出す必要があります。

56
Bogatyr

次のこともできます。

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return 0.0;
}

これは私の(単一の)セクションヘッダーで機能するようで、reloadDataの必要性を回避します。

ご了承ください:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

はまだ呼び出されていますが、その戻り値は無視されているようです。

20
mts

removeHeaderというブール型のプロパティを作成し、ヘッダーを削除したいときはいつでも次のように呼び出します。

func removeSectionHeader() {
        removeHeader = true
        self.tableView.reloadData()
    }

次に、tableViewがリロードされると、次のtableViewデリゲートメソッドが呼び出されます。

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        if removeHeader {
            return 0.0
        } else {
            let height = self.tableView.sectionHeaderHeight
            return height
        }
    }
0
Patrick Ridd