0

私はPFQueryTableViewController映画をリストする を持っています。私のナビゲーション バーにはフィルター ボタンがあり、ユーザーがそれを押すとUIPopoverPresentationController. このポップオーバーは、UITableView にいくつかのオプションを表示するだけです。以下の画像を参照してください。

ここに画像の説明を入力

ゴール

ユーザーがポップオーバーでオプションを選択すると、オプション インデックスがメインに返され、PFQueryTableViewControllerそれに応じてテーブルが更新される必要があります。また、ポップオーバー コントローラーも閉じます。

テーブルをソートする方法は既に知っています。選択したオプションを戻す方法と、それをifステートメントに追加して Parse クエリをフィルタリングする方法を知る必要があります。たとえば、ユーザーが最高評価でフィルタリングすることを選択した場合、私のqueryForTable()関数では、次のようなものを配置します。

if XXXXXXXXXXXX {

query.orderByDescending("highestRated")

}

そして、私はすでにポップオーバー VC を作成しており、それは機能します。

うまくいけば、これは理にかなっています...そうでない場合は、詳細を尋ねてください。私の popover VC のコードは次のとおりです。

class SortByViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

@IBOutlet weak var sortByTableView: UITableView!

var sortByOptions = ["Date added", "Film name", "Our star rating", "Highest rated", "Lowest rated", "Director's name"]

override func viewDidLoad() {
    super.viewDidLoad()

    self.sortByTableView.rowHeight = 44.0

    sortByTableView.tableFooterView = UIView(frame:CGRectZero)

    sortByTableView.backgroundColor = UIColor.clearColor()


}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return sortByOptions.count

}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell = sortByTableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell

    cell.textLabel?.text = self.sortByOptions[indexPath.row]

    let imageName = UIImage(named: sortByOptions[indexPath.row])
    cell.imageView?.image = imageName

    let itemSize:CGSize = CGSizeMake(30, 30)
    UIGraphicsBeginImageContextWithOptions(itemSize, false, UIScreen.mainScreen().scale)
    let imageRect : CGRect = CGRectMake(0, 0, itemSize.width, itemSize.height)
    cell.imageView!.image?.drawInRect(imageRect)
    cell.imageView!.image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    cell.textLabel?.textColor = UIColor(hue: 359/360, saturation: 67/100, brightness: 71/100, alpha: 1)

    cell.backgroundColor = UIColor.clearColor()

    return cell
}

}
4

1 に答える 1

1

ここでプロトコル/デリゲートを使用できます。popviewcontroller は tableviewcontroller になるか、tableview を持ちます。このコントローラーを popover として呼び出す必要があります。didselect の popOverController でデリゲート関数を呼び出し、オプション select を必要に応じて文字列/インデックスとして渡します。このデリゲート メソッドはビュー コントローラーに実装され、テーブルの並べ替えと再読み込みを行うことができます。

これが私が作成したデモです。要件に応じて同じものを更新できます。

https://github.com/quantumarun/Demos/tree/master/PopOverDemo

ViewController.swift で機能を確認します

func sortSelection(selectedItem: Int)

これは、ポップオーバーで選択したときに呼び出されるデリゲート関数です。必要に応じて、Int の代わりに文字列を渡すこともできます。

于 2016-03-29T17:47:17.180 に答える