0

このサンプル ディクショナリを入力する UITableView があります。

var WholeDict = [
    "Animals" : ["Cat","Dog"],
    "Fruits" : ["Apple","Orange"]
]

内容が小さすぎます。したがって、UITableView のコンテンツの下に表示される不要なセルを回避できるように、グループ化された UITableView スタイルを選択しています。しかし、問題は、グループ化されたスタイルを選択すると、スクロール時に各セクションの下のセルがヘッダーの下に移動しないことです。スクロールは最初にヘッダーを移動します。 グループ化されたスタイル: ヘッダーに沿ってスクロールするセル& プレーン スタイル: ヘッダーの下にスライドするセル。これは私がコードでやっていることです

func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
    let allkeys = Array(WholeDict.keys)
    return allkeys[section]
}

func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
    if let headerView = view as? UITableViewHeaderFooterView {
        headerView.textLabel?.textAlignment = .Center
    }
}

では、テーブルビューの下の余分なスペースを回避し、同時にヘッダーの下の行のスライドを使用するにはどうすればよいですか?

EDIT 私はウォルターの答えを使用しています。それは私のために働いています。しかし、その後、別の問題が発生しました。最後の行を超えてスクロールすると、追加したフッターだけが画面に表示されます。そこで、別の回避策を追加しました。

func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
    let visiblerows = MyTable.indexPathsForVisibleRows
    if visiblerows?.count == 0 {
        let ScrollToIndexPath = NSIndexPath(forRow: 0, inSection: WholeDict.count - 1)
        MyTable.scrollToRowAtIndexPath(ScrollToIndexPath, atScrollPosition: UITableViewScrollPosition.Top, animated: true)
    }
}
4

2 に答える 2

1

UITableView常に空白の「セル」を追加してスペースを埋めます。それらをなくすには、最後に入力された行の下部と tableView の下部の間のスペースを埋める footerView を作成する必要があります。これは簡単な例ですが、セルを追加する方法によっては、移動する必要がある場合があります。tableView のcontentSizeプロパティは、tableView の設定された部分と同じ高さになります。

 let contentSize = self.tableView.contentSize
 let footer = UIView(frame: CGRect(x: self.tableView.frame.origin.x, 
                                   y: self.tableView.frame.origin.y + contentSize.height, 
                               width: self.tableView.frame.size.width,
                              height: self.tableView.frame.height - self.tableView.contentSize.height))

  self.tableView.tableFooterView = footer
于 2016-05-07T02:13:00.397 に答える
0

セクション ヘッダーを固定したい場合は、このプロパティを使用できます。

self.tableView.style = UITableViewStyleGrouped

これにより、セクション ヘッダーが行にくっつき、一緒にスクロールします。

于 2016-05-05T08:57:12.790 に答える