2010-08-15 54 views
2

与我的NSMutableArray和UITableView有一个奇怪的问题。UITableView复制所有行的第一个NSArray项目

它有数组中的4项,该表显示4行,但每行只包含第一阵列的项目,而不是第1行显示阵列第1项,第2行显示2项,等等...

这里是我的代码:

我可变数组 //在.H

NSMutableArray *tableRows; 

//在.M

tableRows = [[NSMutableArray arrayWithObjects:@"For Business, For Pleasure", 
        @"A Great Decision", 
        @"Air Charter Your Honeymoon", 
        @"Time Flies", nil] retain]; 

我的表中的数据源和委托具有

-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { 
    return (NSInteger)[tableRows count]; 
} 
-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *cellID = @"CELL_AIR"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID]; 
    if(cell == nil) { 
     cell = [self makeTableCell:cellID identifier:indexPath]; 
    } 
    return cell; 
} 

-(UITableViewCell *)makeTableCell:(NSString *)identifier identifier:(NSIndexPath *)indexPath { 
    //frames 
    CGRect cellFrame = CGRectMake(0, 10, 320, 50); 
    CGRect lbl1Frame = CGRectMake(10, 0, 320, 25); 
    CGRect lbl2Frame = CGRectMake(10, 20, 320, 20); 


    UITableViewCell *cell = [[UITableViewCell alloc] initWithFrame:cellFrame reuseIdentifier:identifier]; 

    UILabel *lbl1 = [[UILabel alloc] initWithFrame:lbl1Frame]; 
    lbl1.tag=1; 
    lbl1.font = [UIFont systemFontOfSize:19]; 
    lbl1.text = [tableRows objectAtIndex:indexPath.row]; 


    UILabel *lbl2 = [[UILabel alloc] initWithFrame:lbl2Frame]; 
    lbl2.tag=2; 
    lbl2.text = @"Tap to read more..."; 
    lbl2.font = [UIFont systemFontOfSize:12]; 

    [cell.contentView addSubview:lbl1]; 
    [cell.contentView addSubview:lbl2]; 

    return cell; 
} 

-(NSInteger) tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section { 
    return 1; 
} 

-(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    return 50; 
} 

任何帮助将是巨大的感谢!

感谢

Ç

回答

3

这将导致错误:

-(NSInteger) tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section { 
    return 1; 
} 

你只有1每个部分行的。因此,对于每一个部分,该指数路径从0开始又那么你只得到第一个项目在阵列

我觉得做的最好的方法应该是:

-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { 
    return 1; 
} 

-(NSInteger) tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section { 
    return (NSInteger)[tableRows count]; 
} 
+0

非常好。谢谢 - 将标记为已回答。 – 2010-08-15 12:40:38

1

添加上已经回答了什么vodkhang,这是我该怎么做:

-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { 
return 1; 
} 

-(NSInteger) tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section { 
return [tableRows count]; 
} 

-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
static NSString *cellID = @"CELL_AIR"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID]; 
if(cell == nil) { 
    cell = [self makeTableCell:cellID identifier:indexPath]; 
} 

[[cell textLabel] 
     setText:[tableRows objectAtIndex:indexPath.row]]; 

return cell; 
} 

我真的不使用(NSInteger)[数组数]。由于方法计数返回整数类型。我希望这有帮助。

+0

这确实有帮助,谢谢梅尔文。 :) – 2010-08-18 11:26:46

相关问题