2

我有一个两难选择,我有两个 UIPickerViews 在加载两个不同的视图时“显示”。我从一个开始,UIPickerView并且能够通过加载数组和UIPickerViewViewController 中的所有其他操作来启动并运行它。

我认为这就像为 new 复制/粘贴相同的方法一样简单UIPickerView,但只需更改变量名称,也在同一个UIViewController.

问题是 - 两者UIPickerView都在下拉列表中显示相同的数据集?我只是在这里遗漏了一些明显的东西吗?

更新如下

我对以下所有四种方法都这样做了,现在一旦加载“下一个”视图,应用程序就会崩溃?这看起来对吗?

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView 

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

- (NSString *)thePickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component

- (void)thePickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
4

1 回答 1

13

是的,您必须使用 UIPickerView 参数来确定哪个选择器视图实际上在请求数据 - 因为您已将两个选择器设置为相同的数据源。

-(void)numberOfComponentInPickerView:(UIPickerView*)thePickerView {
    if(thePickerView == firstPickerView) {
       // return number of components in first picker    
    } else if(thePickerView == secondPickerView) {    
       // return number of components in second picker    
    } else {
       assert(NO);
    }
}

// repeat for all other delegate / datasource methods
于 2011-04-05T00:41:41.830 回答