我在 ApplicationConstants.h 文件中创建了一个枚举,枚举如下所示。
typedef enum { CurrentLocation = 0, 当前城市, CurrentRegion} enumLocation;
现在问题是我不知道如何在UIPickerView中将此枚举设置为数据源!任何人都可以给我这个想法吗?之前我曾使用NSArray作为数据源。但我现在想要枚举。因为这个问题我卡住了。你能帮助我吗 ?所以我可以继续申请。
答案 0 :(得分:0)
您无法直接显示枚举的标识符。您必须准备一个大的if / else / switch块来为每个元素准备一个字符串,或者为数组中的每个元素添加字符串并从那里按索引进行选择。
枚举类型通常用于代替程序中的幻数,因此旨在使代码更容易被人阅读,但底层表示形式是基本数据类型之一(int,char等)。 / p>
答案 1 :(得分:0)
对于UIPickerViewDataSource
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
return LOCATION_COUNT;
}
使用诀窍进行枚举
typedef enum { CurrentLocation = 0, CurrentCity, CurrentRegion, LOCATION_COUNT} enumLocation;
用于UIPickerViewDelegate
- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
[self.enumLocationStringDict objectForKey:[NSNumber numberWithInt:row]]
}
字典可以如下
self.enumLocationStringDict = [NSDictionary dictionaryWithObjectsAndKeys:
@"CurrentLocation", [NSNumber numberWithInt:CurrentLocation],
@"CurrentCity", [NSNumber numberWithInt:CurrentCity],
@"CurrentRegion", [NSNumber numberWithInt:CurrentRegion],
,nil];
答案 2 :(得分:0)
您可以为instace选择为其定义简单宏的方法,如下所示:
头文件中的( .h ):
#define NAMEOF(var) @#var
typedef enum : NSInteger {
CustomTypeUknown = 0,
CustomTypeSomething,
CustomTypeParticularValue,
CustomTypeBoringValue,
} CustomType;
在实施文件( .m )
中NSArray *_array = [NSArray arrayWithObjects:NAMEOF(CustomTypeUknown), NAMEOF(CustomTypeSomething), NAMEOF(CustomTypeParticularValue), NAMEOF(CustomTypeBoringValue), nil];
对象将是带有名称的字符串,但出于安全考虑,您可以通过记录_array
来检查值:
NSLog(@"%@", _array);
它应该是这样的:
(
CustomTypeUknown,
CustomTypeSomething,
CustomTypeParticularValue,
CustomTypeBoringValue
)
如果我没有误解你的问题,那就是你找的......