【问题标题】:Pass back Tableview Cell Data to filter objects in my PFQueryTableViewController in Swift传回 Tableview 单元格数据以在 Swift 中过滤我的 PFQueryTableViewController 中的对象
【发布时间】:2016-03-29 17:26:12
【问题描述】:

我有一个PFQueryTableViewController,其中列出了电影。在我的导航栏中,我有一个过滤器按钮,当用户按下它时,它会显示一个UIPopoverPresentationController。这个弹出框只是在 UITableView 中显示一些选项。见下图:

目标

当用户在弹出窗口中选择一个选项时,我需要将选项索引传递回主PFQueryTableViewController,然后相应地更新表。并且还要关闭弹出框控制器。

我已经知道如何对表进行排序,我只需要知道如何将所选选项传回,然后如何将其添加到if 语句中以过滤我的 Parse 查询。例如,如果用户选择按最高评分进行过滤,在我的queryForTable() 函数中,我将输入如下内容:

if XXXXXXXXXXXX {

query.orderByDescending("highestRated")

}

我已经创建了 popover 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
}

}

【问题讨论】:

    标签: ios swift uitableview nsindexpath pfquerytableviewcontrolle


    【解决方案1】:

    您可以在此处使用协议/代表。您的 popviewcontroller 将是一个 tableviewcontroller 或将有一个 tableview。您必须将此控制器称为弹出框。现在在 didselect 上的 popOverController 中调用委托函数并根据您的要求将选项选择作为字符串/索引传递。此委托方法将在您的视图控制器中实现,您可以在其中对表格进行排序和重新加载。

    这是我创建的演示。您可以根据自己的要求进行更新。

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

    在 ViewController.swift 中检查函数

    func sortSelection(selectedItem: Int)
    

    这是在 Popover 中选择时将调用的委托函数。如果需要,您也可以传递字符串而不是 Int。

    【讨论】:

    • 感谢您的回复,您能否在代码中告诉我如何添加它,因为这就是我遇到的问题,提前谢谢。
    • 这真的很有帮助!非常感谢,让它完美运行!
    猜你喜欢
    • 2020-01-29
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-18
    相关资源
    最近更新 更多