使用扩展名访问单独类中的CollectionView

时间:2018-12-12 02:08:39

标签: swift uipickerview extension-methods

我有一个名为PickerFilterClass的类,该类可访问YNDropDownView库,并在其中在PickerFilterClass的扩展中创建pickerview。我想要pickerview帮助在另一个名为RestaurantDetails的类中对collectionview进行排序。我正在尝试使用pickerview didselect函数访问名为productCollection的collectionview并在用户pickerview选择一行时重新加载数据。我在这里就是我要这样做的方式:

PickerFilter类

class PickerFilterClass: YNDropDownView {


    @IBOutlet var pickerView: UIPickerView!
    var rotationAngle: CGFloat!
    var filteredProducts = [Product]()
    var products = [Product]()
    let prodCollection: RestaurantDetails

let sections = [["Burgers", "Fries", "Cola", "Chicken", "Sides"],["Breakfast", "Lunch", "Dinner"]]


    override init(frame: CGRect) {
        super.init(frame: frame)

        self.backgroundColor = UIColor.white
        self.initViews()



    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.initViews()


    }


    @IBAction func confirmButtonClicked(_ sender: Any) {
        self.normalSelected(at: 1)
        self.hideMenu()
    }
    @IBAction func cancelButtonClicked(_ sender: Any) {
//        self.changeMenu(title: "Changed", at: 1)
//        self.changeMenu(title: "Changed", status: .selected, at: 0)
        self.alwaysSelected(at: 1)
//        self.alwaysSelected(at: 2)
//        self.alwaysSelected(at: 3)
        self.hideMenu()

    }

    override func dropDownViewOpened() {
        print("Open Menu")


    }

    override func dropDownViewClosed() {
        print("Close Menu")
    }

    func initViews() {


    }



}

extension PickerFilterClass: UIPickerViewDataSource, UIPickerViewDelegate {



    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 2
    }
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return sections[component].count
    }

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {

        pickerView.sizeToFit()
        return sections[component][row]
    }

    func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
        let view = UIView()
        view.frame = CGRect(x: 10, y: 20, width: 300, height: 52)

        let label = UILabel()
        label.frame = CGRect(x: 0, y: 0, width: 300, height: 52)
        label.textAlignment = .center
        label.font = UIFont(name: "Tiny.Toon", size: 11)
        label.textColor = UIColor.purple
        label.text = sections[component][row]
        view.addSubview(label)

        // view rotation
//        view.transform = CGAffineTransform(rotationAngle: 90 * (.pi/180))



        return view
    }

我正在尝试使用pickerview在此处访问此集合视图:

  func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
            print(sections[row])

            if sections.count > row {
                let selectedUsage = sections[component][row].lowercased()
                if (selectedUsage == RestaurantDetails.allProductIdentifier.lowercased()) {
                    filteredProducts = products
                } else {
                    filteredProducts = products.filter { ($0.usage?.lowercased() ?? "") == selectedUsage }
                }
                self.prodCollection.productCollection.reloadData()
            }
        }


    }

0 个答案:

没有答案