如何使用枚举列表来填充UITableView?

时间:2014-05-20 04:14:44

标签: ios objective-c uitableview enums

我有一个.h文件用于定义我的所有enum列表,我现在想使用其中一个列表来填充我在{{1}中创建的UITableView } .class。但是我不确定如何将UITableViewController列表读入enum类?

这就是我的UITableViewController列表。

enum

我想在// NameNum typedef enum {John = 0, Jerry = 1, Jack = 2, Jeff = 3, Jonny = 4} Namenum; 中显示名称。

更新 我使用枚举的原因是因为当选择UITableView中的名称时,我需要在请求中将数字对应的号码发送到我正在进行的服务器调用。

2 个答案:

答案 0 :(得分:2)

实际上......我有一个不同的方法来实现它。您可以直接使用字典而不是枚举。这就是你如何做到的

在你.h你可以这样做..

#define getDictionaryarray() @[                         \
                                @{                      \
                                    @"Name": @"John",   \
                                    @"ID":@"0"          \
                                },                      \
                                @{                      \
                                    @"Name": @"Jerry",  \
                                    @"ID":@"1"          \
                                    },                  \
                                @{                      \
                                    @"Name": @"Jack",   \
                                    @"ID":@"2"          \
                                },                      \
                                @{                      \
                                    @"Name": @"Jeff",   \
                                    @"ID":@"3"          \
                                },                      \
                                @{                      \
                                    @"Name": @"Jonny",  \
                                    @"ID":@"4"          \
                                },                      \
                            ];

然后表视图数据源方法遵循

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    NSArray *array = getDictionaryarray();
    return array.count;
}

并在-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    NSArray *dictionaryarray = getDictionaryarray();
    cell.textLabel.text = [[dictionaryarray objectAtIndex:indexPath.row] valueForKey:@"Name"];

这会给你一些优点,比如id不需要是0,1,2,3,它可以是任何数字。您可以向字典中添加更多属性,例如姓氏等。最重要的是,它可以做您想做的事情:)

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSArray *array = getDictionaryarray();
    NSLog(@"Id for selected Name %@ is %@",[[array objectAtIndex:indexPath.row] valueForKey:@"Name"],[[array objectAtIndex:indexPath.row] valueForKey:@"ID"]);
}

希望这会有所帮助......

答案 1 :(得分:0)

我会以面向对象的方式处理它并定义类方法以提供您需要的函数 -

+(NSString *) stringForName:(Namenum)name
{
  NSString *ret;
  switch (name)
  {
    case Jack:
        ret=@"Jack";
        break;
    case Jonny:
        ret=@"Johnny";
        break;
    ...
  }

  return ret;

}