私はフィルムをリストするPFQueryTableViewController
を持っています。私のナビゲーションバーにはフィルターボタンがあり、ユーザーがそれを押すとUIPopoverPresentationController
と表示されます。このポップオーバーは、単にUITableViewにいくつかのオプションを表示します。SwiftのPFQueryTableViewController内のオブジェクトをフィルタリングするためにTableviewセルデータを返す
ゴール
ユーザーがポップオーバーでオプションを選択すると、私はオプションのインデックスは、メインPFQueryTableViewController
に戻って渡され、それに応じてテーブルを更新する必要があります下の画像を参照してください。 。また、ポップオーバーコントローラを閉じることもできます。
私は既にテーブルを並べ替える方法を知っています。選択したオプションを戻す方法を知っていて、それをif
ステートメントに追加してParseクエリをフィルタする方法が必要です。例えば、ユーザは最高の評価でフィルタを選択した場合、私のqueryForTable()
機能では、私は次のようなものを出してあげる:
if XXXXXXXXXXXX {
query.orderByDescending("highestRated")
}
そして、私はすでにポップオーバーのVCを作成しましたし、それが動作します。
うまくいけば、これは理にかなっています。私のポップオーバー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
}
}
お返事ありがとうございます。コードに私がどのように追加できるかを教えてもらえますか?問題が発生している場所で、事前に感謝しています。 – Nick89
これは本当に助けになりました!おかげさまで、完璧に働いています! – Nick89