InputView 在 UICollectionView 内的 TextFields 中不起作用

Posted

技术标签:

【中文标题】InputView 在 UICollectionView 内的 TextFields 中不起作用【英文标题】:InputView not working in TextFields inside UICollectionView 【发布时间】:2017-07-19 06:44:02 【问题描述】:

在每个CollectionViewCells 中,我添加了UITextField,需要从选择器视图中获取输入。

所以我在CellForRowAtIndexPath 中将 inputView 分配为 pickerView。 当我运行代码时,输​​入视图部分为空。没有任何pickerviews。

我意识到数据源方法没有被调用。

percentagePicker 在我的 ViewController 上创建了 outlet

这是我的 cellForRowAtIndexPath 方法

    cell.cropPercent.text = [NSString stringWithFormat:@"%@",cropPercentagesList[indexPath.row];

    UIPickerView *pikerView = _percentagePicker;

    [_percentagePicker removeFromSuperview];

    pikerView.delegate =self;
    pikerView.dataSource = self;

    cell.cropPercent.textColor = [UIColor redColor];

    cell.cropPercent.inputView = pikerView;

【问题讨论】:

为什么要从 superView 中删除 percentPicker? 如帖子***.com/a/25882277/5215474中建议的那样 【参考方案1】:

与其创建 UIPickerView 的 outlet 并将其分配给 pickerView 以显示为 inputView,不如试试下面的代码。

    UIPickerView *pikerView = [[UIPickerView alloc]init];

    pikerView.delegate =self;
    pikerView.dataSource = self;

    cell.cropPercent.textColor = [UIColor redColor];

    cell.cropPercent.inputView = pikerView;

【讨论】:

如果全部不同,我如何获取pickerviews中的值 你可以为这些pickerViews指定标签pickerView.tag = indexPath.row 'NSInvalidArgumentException',原因:'*** -[__NSPlaceholderArray initWithObjects:count:]:尝试从对象 [2] 中插入 nil 对象' 当我在 didselect 之前更改选择器中的项目时出现此错误委托被调用 对不起,我没有得到你。你能解释一下导致这个错误的场景吗? 当我在pickerView中更改选择时【参考方案2】:

您应该将您的 pickerView 代码移动到 viewDidLoad,因为它在您的 viewController 中。不要创建新的UIPickerView 的实例;

- (void) viewDidLoad
 
     [super viewDidLoad];

    _percentagePicker.delegate =self;
    _percentagePicker.dataSource = self;
 

在您的cellForRow 中执行此操作并删除其他UIPickerView 代码:

cell.cropPercent.inputView = pikerView;
yourPickerDataSourceArray = yourSource[indexPath.row];
[percentagePicker reloadAllComponents];

【讨论】:

以上是关于InputView 在 UICollectionView 内的 TextFields 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

iOS 8中具有动态高度的自定义inputView

InputView 在 UICollectionView 内的 TextFields 中不起作用

UIPickerView 作为 inputView 不隐藏在 iPad 上

自定义 inputView 在模态演示期间未正确设置动画

UIPickerView 作为 inputView 在方向变化时搞砸了

UITextField inputView 在 Swift 中不起作用