更新 UIPickerView 行数

Posted

技术标签:

【中文标题】更新 UIPickerView 行数【英文标题】:Update UIPickerView Number of Rows 【发布时间】:2010-11-10 09:08:50 【问题描述】:

我有一个 UIPickerView,它由一个名为 sectionNamesArray 的 NSMutableArray 填充。当一个项目被添加到 sectionNamesArray 时,如何手动调用这个委托?

-- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component



return ([sectionNamesArray count] + 1);


问题是我将这个pickerView添加到titleView中navBar的中心。如果我尝试清空 UIPickerView 并重新分配它以希望再次调用委托,则 PickerView 将显示在导航栏的左侧,而不是中心。我猜也许界面生成器设置将它放在中心...?

代码如下:

-(void) setupPickerView
myPickerView = nil;
myPickerView = [[UIPickerView alloc] init];
myPickerView.backgroundColor = [UIColor clearColor];
myPickerView.delegate = self;
myPickerView.dataSource = self;
myPickerView.showsSelectionIndicator = YES;
[self.navigationController.navigationBar setBackgroundView:myPickerView];

CGSize pickerSize = [myPickerView sizeThatFits:CGSizeZero];
UIView *pickerTransformView = [[UIView alloc] initWithFrame:CGRectMake(-40.0, -43.0, pickerSize.width, pickerSize.height)];
pickerTransformView.transform = CGAffineTransformMakeScale(.55f, .55f);

[pickerTransformView addSubview:myPickerView];
[self.navigationController.navigationBar setBackgroundView:pickerTransformView];


【问题讨论】:

【参考方案1】:

当您向数组添加内容时,您不能使用[UIPickerView reloadAllComponents]- (void)reloadComponent:(NSInteger)component 吗?

这很可能会查询您的委托并调用所有必要的东西来检查您的数组并重新加载视图。

【讨论】:

好主意。我不知道它存在。我现在就试试。大多数对象都有重新加载所有内容的方法吗?我知道 tableview 可以。 效果很好。如果我推送一个模态视图控制器,我如何从我的另一个视图控制器调用这个函数,因为它会自行消失?非常感谢!

以上是关于更新 UIPickerView 行数的主要内容,如果未能解决你的问题,请参考以下文章

点击 uipickerview 时键盘不退出

UIPickerView 最佳实践?

如何使用 Swift 3 UIPickerView 引用多行?

UIPickerView 在重新加载时冻结 UI

在 iPhone 上水平滚动的 UIPickerView?

超过 1 个 UIPickerView Swift