uitableview行呈现奇怪的行为

时间:2012-02-22 15:02:42

标签: iphone ios ipad uitableview

我想要两个创建2个部分uitableview 所以我做了以下代码

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    NSLog(@" I entered numberOfSectionsInTableView");
    return 2;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {          
    if (section = 0 ) {  
        1;   
    }
    else {
        9; 
    }
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    NSLog(@" I entered cellForRowAtIndexPath");
    NSLog(@"the Caf files count is : %d",[self.CafFileList count] );
    NSLog(@" the txt file %d",[self.TXTFileList count] );
    if (indexPath.section == 0 ) { // Enter here twice , even I say it contain only one row
        NSLog(@"////////////////////////Section 0 %d" , [indexPath row] );  
        if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        }   
        [[cell textLabel] setText:[self.TXTFileList objectAtIndex:[indexPath row] ]   ];    
        return cell;    
    }
    else if (indexPath.section == 0 && indexPath.row < [self.TXTFileList count]  ){
        NSLog(@"////////////////////////Section 1 %d" , [indexPath row] );
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        }
        [[cell textLabel] setText:[self.CafFileList objectAtIndex:[indexPath row]]   ];
        return cell;
    }
}

问题是它在这里输入两次,即使我说它只包含一行

if (indexPath.section == 0 ) {   

任何想法如何解决

2 个答案:

答案 0 :(得分:4)

您不会在numberOfRowsInSection中返回行号,只需输入一个数字,但不返回任何内容。

此外,

    if (section = 0 ) {  

设置 section为0,您希望使用==运算符。

答案 1 :(得分:3)

if (section == 0 ) {  
    return 1;   
}
else {
    return 9; 
}

还有你的代码:

else if (indexPath.section == 0 && indexPath.row < [self.TXTFileList count]  ){

你永远不会为部分生成单元格== 1.似乎会崩溃或错误重用单元格