iphone - UIPickerView 未返回正确的数据

标签 iphone objective-c ios ipad

我有一个带有横向 View 和纵向 View 的主视图,它们作为包装 View 的 subview 加载。横向 View 和纵向 View 都有链接到它们的 UIPickerView 对象。在我的源代码中,我将它们全部作为属性,并且我还有一个用于横向和纵向选择器的包装器。它们被定义为

@property (nonatomic, retain, readonly) IBOutlet UIPickerView *pickerTown;
@property (nonatomic, retain, readonly) IBOutlet UIPickerView *pickerType;
@property (nonatomic, retain, readonly) IBOutlet UIDatePicker *pickerFrom;
@property (nonatomic, retain, readonly) IBOutlet UIDatePicker *pickerTo;

@property (nonatomic, retain) IBOutlet UIPickerView *landscapePickerTown;
@property (nonatomic, retain) IBOutlet UIPickerView *landscapePickerType;
@property (nonatomic, retain) IBOutlet UIDatePicker *landscapePickerFrom;
@property (nonatomic, retain) IBOutlet UIDatePicker *landscapePickerTo;

@property (nonatomic, retain) IBOutlet UIPickerView *portraitPickerTown;
@property (nonatomic, retain) IBOutlet UIPickerView *portraitPickerType;
@property (nonatomic, retain) IBOutlet UIDatePicker *portraitPickerFrom;
@property (nonatomic, retain) IBOutlet UIDatePicker *portraitPickerTo;

对于我拥有的每个只读包装器

- (UIPickerView *) pickerTown
{
    if(self.landscapeView.superview)
    {
        return landscapePickerTown;
    }else
    {
        return portraitPickerTown;
    }
}

但是当我处于纵向或横向时,我会尝试说

myHelper.selectedTown = [myHelper.towns objectAtIndex:[pickerTown selectedRowInComponent:0]];

我没有得到选定的值,而只是得到数组中的第一个值。

数据添加如下:

if(pickerView == landscapePickerType || pickerView == portraitPickerType) {
    return [myHelper.types objectAtIndex:row];
}else if(pickerView == landscapePickerTown || pickerView == portraitPickerTown){
    return [myHelper.towns objectAtIndex:row]; 
}else
{
    return @"";
}

和数组:

myHelper = [Helper sharedManager];
[myHelper.types addObject:@"None"];
[myHelper.types addObject:@"Food & Wine"];
[myHelper.types addObject:@"Test"];
[myHelper.towns addObject:@"None"];
[myHelper.towns addObject:@"Vanderbijlpark"];
[myHelper.towns addObject:@"Test"];

我在这里做错了什么?

最佳答案

如果您只获取第一个元素,则表明 [pickerTown selectedRowInComponent:0] 的计算结果始终为零,只有当 pickerTown 时才会发生这种情况>零。这很可能是由于 socket 未连接所致。

但在这种情况下,我认为您是直接访问实例变量,而不是方法返回的值。如果您对 pickerTown 使用 @synthesize,请将其设置为 @dynamic。并将语句更改为 [self.pickerTown selectedRowInComponent:0] 以访问 getter 的值。

关于iphone - UIPickerView 未返回正确的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6730044/

相关文章:

iphone - UITableView - 删除行后选择最近的行

iphone - 调用cancelButton后将UISearchBar隐藏在UINavigationBar下方

ios - 当 webView 完成加载时,事件指示器不会消失

ios - 捏合手势未应用于 UILabel 但应用于 UIView

ios - 将 JSON 响应本地保存在数据库 Objective C 中

ios - 为什么 UITextView 会合并之前设置的 attributedText 的属性?

iphone - 在系留 iPhone 上启动已安装的应用程序

iphone - 为什么这个应用程序在后台崩溃?

ios - VoiceOver 不读取 UITextField subview

objective-c - 如何向已存在的字符串添加字符?