使用 UISegmentedControl 使用 uipickerview 在多个数组之间切换
Posted
技术标签:
【中文标题】使用 UISegmentedControl 使用 uipickerview 在多个数组之间切换【英文标题】:Using a UISegmentedControl to switch between multiple arrays using a uipickerview 【发布时间】:2010-01-25 19:27:54 【问题描述】:我正在使用 app 处理核心数据,其中一个视图是 EditingViewController,它充当许多描述对象属性的 ui 元素的控制器。在 EditingViewController 中,我的所有 ui 元素都被 .hidden = YES/NO;
操作调用和隐藏。我的 ui 元素之一是 uipickerview。目前,两个不同视图中的每一个都有一个数组。这意味着如果他们点击名字字段,array1 将加载到picker1,他们会从中选择,然后如果他们点击姓氏,array2 将加载到picker2,并且生活很好。到目前为止,这是我用来完成这项工作的代码:
- (NSString *)pickerView:(UIPickerView *)picker titleForRow:(NSInteger)row forComponent:(NSInteger)component;
if (picker1 == self.picker)
return [array1 objectAtIndex:row];
else
return [array2 objectAtIndex:row];
但是! array1 太大了,我想在 picker1 中添加一个 UISegmentedControl,以便它可以更好地对 array1 的信息进行排序。我知道 UISegmentedControl 只是一组漂亮的按钮,需要链接 IBAction 和东西,但我怎么能实现它,以便在我的 one 视图中,第一个,只有 picker1 和 array1 是由 UISegmentedControl 管理?是否有可能使它成为一个平滑的排序过程?我想我会根据我在 UISegmentedControl 中设置的条件将 array1 分解为其他数组,我如何链接它们以使它们看起来和工作良好?非常感谢您一如既往地提供有关此主题的任何帮助!谢谢
【问题讨论】:
【参考方案1】:使用selectedSegmentIndex 属性。
例如:
enum
SEGMENT1,
SEGMENT2,
SEGMENT3
;
- (NSString *)pickerView:(UIPickerView *)picker titleForRow:(NSInteger)row forComponent:(NSInteger)component;
if (picker1 == self.picker)
if (segmentedControl.selectedSegmentIndex == SEGMENT1)
return [array1sub1 objectAtIndex:row];
else if (segmentedControl.selectedSegmentIndex == SEGMENT2)
return [array1sub2 objectAtIndex:row];
else if (segmentedControl.selectedSegmentIndex == SEGMENT3)
return [array1sub3 objectAtIndex:row];
else
return [array2 objectAtIndex:row];
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
if (picker1 == self.picker)
if (segmentedControl.selectedSegmentIndex == SEGMENT1)
return [array1sub1 count];
else if (segmentedControl.selectedSegmentIndex == SEGMENT2)
return [array1sub2 count];
else if (segmentedControl.selectedSegmentIndex == SEGMENT3)
return [array1sub3 count];
else
return [array2 count];
此外,当分段控件发生更改时,您会希望重新加载选择器,因此您应该使用如下方法链接分段控件的值更改事件:
- (IBAction)handleValueChanged
[self.picker reloadAllComponents];
【讨论】:
以上是关于使用 UISegmentedControl 使用 uipickerview 在多个数组之间切换的主要内容,如果未能解决你的问题,请参考以下文章
使用 UISegmentedControl 发送的无法识别的选择器
使用 UISegmentedControl 切换 NSFetchedResultsController