tableview数组

时间:2009-08-28 05:02:32

标签: iphone objective-c xcode

我正在制作iphone的应用程序,其中我有一个视图名称dealsviewcontroller,在这个视图中我有每个行的表视图我显示3个数组值。现在的问题是我必须在单独的标签中的下一个视图中显示这些数组值。如果有人对此有任何解决方案,那将会非常令人沮丧。 Thanx提前

2 个答案:

答案 0 :(得分:0)

为下一个视图创建一个新的视图控制器,例如 DealDetailsViewController 。然后,确保它具有可以存储数据结构的属性dealDetails,例如:

@property (nonatomic, retain) DealDetails *dealDetails;

然后在你的UITableViewDelegate实现(可能是DealsViewController)中实现tableView:didSelectRowAtIndexPath:来确定所选择的交易并将其传递给DealDetailsViewController的实例:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
    // Determine the selected value using indexPath.section and/or indexPath.row

    DealDetails *dealDetails = [myArrayOfDealDetails objectAtIndex: indexPath.row];

    DealDetailsViewController *dealDetailsCtrl = [[DealDetailsViewController alloc] initWithNibName: @"DealDetailsViewController" bundle: nil];

    dealsDetailCtrl.dealDetails = dealDetails

    // Assuming you have a navigationController somewhere
    [someNavController pushViewController:dealDetailsCtrl]
}

答案 1 :(得分:0)

假设我坚持你的问题,你希望三个不同数组中的3个值显示在行中。

为此,您需要创建一个新的 UITableViewCell 类。 在项目中选择一个新文件,选择Objective-C类,最后选择 UITableViewCell 的子类。点击下一步按钮并命名 UITableViewCell

alt text http://www.thoughtblog.com/images/UITableViewClass.png

例如,我有一个名为RosterTableViewCell的UITableViewCell类。它有三(3)个标签。在.h文件中创建3个UILabel并实现三(3)个属性。

@interface RosterTableViewCell : UITableViewCell {

    UILabel *playerName;
    UILabel *jerseyNumber;
    UILabel *position;
}

@property (nonatomic,retain) UILabel *playerName;
@property (nonatomic,retain) UILabel *jerseyNumber;
@property (nonatomic,retain) UILabel *position;

-(void)rosterPlayer:(NSString*)player JerseyNumber:(NSString*)jerseyNumber PlayerPosition:(NSString*)playerPosition;

@end

现在在.m文件中,我们需要创建UILabel并将它们放在我们想要的位置。

@implementation RosterTableViewCell

@synthesize playerName;
@synthesize jerseyNumber;
@synthesize position;


- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier {

    if (self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier]) {
        playerName = [[UILabel alloc]initWithFrame:CGRectMake(10,10,200,30)];
        [playerName setTextColor:[UIColor whiteColor]];
        [playerName setFont:[UIFont systemFontOfSize:19]];
        [[self contentView] addSubview:playerName];

        jerseyNumber = [[UILabel alloc]initWithFrame:CGRectMake(240,5,40,20)];
        [jerseyNumber setTextColor:[UIColor whiteColor]];
        [jerseyNumber setFont:[UIFont systemFontOfSize:16]];
        [[self contentView] addSubview:jerseyNumber];

        position = [[UILabel alloc]initWithFrame:CGRectMake(240,25,40,20)];
        [position setTextColor:[UIColor whiteColor]];
        [position setFont:[UIFont systemFontOfSize:16]];
        [[self contentView] addSubview:position];
    }
    return self;
}

- (void)rosterPlayer:(NSString*)player JerseyNumber:(NSString*)jerseyNumber PlayerPosition:(NSString*)playerPosition {

    [playerName setText:player];
    [playerName setNeedsDisplay];

    [jerseyNumber setText: jerseyNumber];
    [jerseyNumber setNeedsDisplay];

    [position setText: playerPosition];
    [position setNeedsDisplay];
}

现在在创建TableView的代码中,您需要创建TableViewCell。不要忘记导入我们上面创建的类,以便编译器可以引用它。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    RosterTableViewCell *cell = (RosterTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"RosterTableViewCell"];

    if (cell == nil) 
        cell = [[[RosterTableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"RosterTableViewCell"] autorelease];

[cell rosterPlayer:[myArrayOfDealDetails objectAtIndex:[indexPath row]]     JerseyNumber:[myArrayOfDealDetails2 objectAtIndex:[indexPath row]] PlayerPosition:[myArrayOfDealDetails3 objectAtIndex:[indexPath row]]];

    return cell;
}

我使用了三个数组样本,您将传递给rosterPlayer函数。它可能看起来像很多代码,但大多数只是定位。