2

名前または値でテーブルを並べ替えることができるように、変更されたUITableViewSectionHeaderときに処理するプロトコルに置き換えるカスタム セルを作成しました。UISegmentedControl.index

カスタムセル

import UIKit
protocol OrdenarTableViewDelegate {
func ordenarTableView(cell: OrdenarTableViewCell)
}
class OrdenarTableViewCell: UITableViewCell {
var delegate: OrdenarTableViewDelegate?
@IBOutlet weak var segmentedOrdenar: UISegmentedControl!
@IBAction func alteraOrdenacao(sender: UISegmentedControl) {
    delegate?.ordenarTableView(self)
}

UITableViewControler で、プロトコルを参照しました

class SelecionadasTableViewController: UITableViewController, UITextFieldDelegate, OrdenarTableViewDelegate {

そしてそれを実装しました:

    // MARK: - Ordenar Delegate
func ordenarTableView(cell: OrdenarTableViewCell) {
    if cell.segmentedOrdenar.selectedSegmentIndex == 0 {
        listaCervejas = bancoDeDados.selecionaCervejas(false)
    } else {
        listaCervejas = bancoDeDados.selecionaCervejas(true)
    }
    ordenarCervejas = cell.segmentedOrdenar.selectedSegmentIndex
    tableView.reloadData()
}

インデックス 1 を選択すると、アプリは正常に動作しますが、インデックス 0 を選択するとUITextField、他のセルをクリックするか、更新のためにテーブルをプルダウンした場合にのみアクションが実行されます (ちなみに、更新するために実装されていません)。 )

不足しているものはありますか?それは本当にぎこちなく感じるからです。


UISegmentedControl問題が発生するのは、画面のどこにも触れずに 1 つのオプションをクリックしてから別のオプションをクリックした場合のみです...

4

4 に答える 4

1

カスタム ビューを作成して tableHeaderView を置き換えることができます。試してみてください。

于 2016-12-01T02:35:37.097 に答える
0

セルの更新が実行されていない疑いがあります。reloadTable は mainThread で実行されますか?

確認するには、CellForRowAtIndexPath に print log ステートメントを含めます。

于 2016-11-27T07:41:20.463 に答える
0

テーブル ビューをリロードすると、テーブル ビューに追加されたすべてがリロードされます。選択したセグメント インデックスを毎回確認し、テーブルのリロード後にこれをリセットします。

于 2016-05-05T07:55:18.883 に答える