Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设置委托时RxSwift UIPicker崩溃_Swift_Rx Swift - Fatal编程技术网

设置委托时RxSwift UIPicker崩溃

设置委托时RxSwift UIPicker崩溃,swift,rx-swift,Swift,Rx Swift,所以我为我的应用程序设置了一个uipicker,代码如下 self.leftPicker.rx.setDelegate(self).disposed(by: bag) Driver.just([1, 2, 3, 4, 5, 6]) .drive(leftPicker.rx.items){ index, item, view in if let label = view as? UILabel{

所以我为我的应用程序设置了一个uipicker,代码如下

self.leftPicker.rx.setDelegate(self).disposed(by: bag)
        Driver.just([1, 2, 3, 4, 5, 6])
            .drive(leftPicker.rx.items){
                index, item, view in
                if let label = view as? UILabel{
                    return label
                }
                let label = UILabel()
                label.font = UIFont(name: SRFonts.asap_regular.fontName, size: 13)
                label.textAlignment = .center
                label.text = "\(item)"
                return label
        }
        .disposed(by: bag)
如果我这样做,应用程序将崩溃,说有一个冲突的委托。。。所以如果我要移除

self.leftPicker.rx.setDelegate(self).disposed(by: bag)
飞机失事了

但问题是,我希望为uipicker行设置高度,没有委托,我似乎无法在中设置高度

func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {
        return 44
    }
这真的很奇怪,因为它通常适用于RxTableView和RxCollectionView


有人知道怎么回事吗

立即引起我注意的是,您传递的是一个数组,而不是数组的数组。请尝试[[1,2,3,4,5,6]]

let数据:PickerViewAdapter.Element=[ [0, 1, 2], [甲、乙、丙] ] 可观测数据 .bindto:pickerView.rx.itemsadapter:PickerViewAdapter .处置人:self.disposeBag 最终类PickerViewAdapter:NSObject ,UIPickerViewDataSource ,UIPickerViewDelegate ,RxPickerViewDataSourceType ,SectionedViewDataSourceType{ typealias元素=[[CustomStringConvertible]] 私有var项目:[[CustomStringConvertible]=[] indexPath:indexPath抛出->任何{ 返回项[indexPath.section][indexPath.row] } pickerView中的func NumberOfComponent:UIPickerView->Int{ 返回项目。计数 } func pickerView\uPickerView:UIPickerView,numberOfRowsInComponent:Int->Int{ 返回项目[component]。计数 } /* ... */ 编辑:


另外,在我的示例中,适配器是委托。如果您不指定一个,它将自动创建委托,从而导致冲突


Try.bindto:pickerView.rx.itemsadapter:PickerViewAdapter与您的自定义适配器类一起使用。

uhmm,传递数组非常好。.它只是一个只包含一个部分的tableview。.您在这里做的是假设您有多个组件…无论如何,它根本无法回答问题。在我的示例中,适配器是委托。如果您没有,则指定一个,它将自动创建委托,因此会发生冲突。Try.bindto:pickerView.rx.itemsadapter:PickerViewAdapter与您的自定义适配器类。