带有几个单元格的iphone listview

时间:2011-05-27 16:40:13

标签: iphone objective-c nsmutablearray

我已经能够使用下面的部分代码使listview显示单个数据字段。

NSMutableArray *array;
..
..
  array = [[NSMutableArray alloc] init];
  [array addObject:@"John Doe"];

但是我想保留几个字段,例如:  名称  ID  出生日期

我假设NSMutableArrary是一个NSString但是我需要类似于C中的结构来保存我需要的字段。

ID将被“隐藏”但我需要在用户点击该行时访问它。我如何访问ID和其他字段?如何进行设置,以便列表中包含信息?

有没有人有任何示例代码可以解释如何执行此操作?

编辑#1 :感谢您的评论,但我对iPhone太新了,真的需要找到有关如何执行此操作的示例代码。虽然评论听起来像是可以做到这一点,但我不知道从哪里开始。有人可以为3个字段的想法发布示例代码吗?

编辑#2 :到目前为止,我已尝试过所有内容,这是正确的方法,还是应该使用下面的提示?

Userrec.m

#import "UserRec.h"
@implementation Userrec
@synthesize Name, ID;
-(id)initWithName:(NSString *)n ID:(NSString *)d {
    self.Name = n;
    self.ID = d;
    return self;
}
@end

UserRec.h

#import <UIKit/UIKit.h>
@interface Userrec : NSObject {
NSString *Name;
NSString *ID;
}
@property (nonatomic, retain) NSString *Name;
@property (nonatomic, retain) NSString *ID;
-(id)initWithName:(NSString *)n ID:(NSString *)d;
@end

UserList.m

@synthesize userrecs;
…
- (void)viewDidLoad {
    [super viewDidLoad];
    NSString *Name = @"Name";
    NSString *ID = @"IID";
    Userrec *userrec = [[Userrec alloc] initWithName:Name ID:ID ];
    [userrecs addObject:userrec];
    NSLog(@"Count %d",[userrecs count]);
    [userrec release];
    NSLog(@"Count %d",[userrecs count]);
}

在我添加对象并检查计数后它= 0.所以我假设出了什么问题?

2 个答案:

答案 0 :(得分:1)

看一下NSMutableDictionary它似乎是您想要使用的确切内容

编辑: 这是一些示例代码

NSMutableArray *myData = [[NSMutableArray alloc] init];
NSMutableDictionary *myRow = [[NSMutableDictionary alloc] init];
[myRow setObject:@"John Doe" forKey:@"Name"];
[myRow setObject:@"4738" forKey:@"ID"];
[myRow setObject:@"1/23/45" forKey:@"DOB"];
[myData addObject:myRow];
[myRow release];
//Repeat from dictioanry alloc through release for each row you need to add

要在UITableView中显示它,您需要有一个UITableViewController类。在那里覆盖cellForRowAtIndexPath:函数。这是该函数的简单实现

-(UITableViewCell*) tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSInteger row = [indexPath row];
    static NSString *kCellID = @"cellID";

    UITableViewCell *cell = nil;

    cell = [tableView dequeueReuseableCellWithIdentifier:kCellID];
    if ( cell == nil )
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kCellID] autorelease];
    }

    NSMutableDictionary curRow = [myData objectAtIndex:row];
    cell.textLabel.text = [curRow objectForKey:@"Name"];

    return cell;
}

答案 1 :(得分:1)

NSMutableDictionary是最好的方式。您可以执行以下操作:

NSMutableDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"John Doe", @"Name", [NSNumber numberWithInt:5], @"ID", nil];

您可以使用相同的模板,甚至NSArray对象继续添加任意数量的字段。如果你有任何问题,我会查看文档。请记住,您只能存储指向NSDictionary中对象的指针。像

这样的事情

NSMutableDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"John Doe", @"Name", 5, @"ID", nil];

不起作用。祝你好运!