在UITableviewCell中慢速滚动

时间:2012-01-19 03:24:37

标签: iphone uitableview

我在视图中有一个tableview单元格,其中有一些文本,圣经的经文。但是滚动不是更顺畅我有UITableView的代码

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


// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

        return [delegate.allSelectedVerseEnglish count];


    }

    return 0;    

}



// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

   static NSString *CellIdentifier = @"Cell";

    readCell *cell = (readCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier

                 ] autorelease];
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"readCell" owner:self options:nil]; 
        cell = [nib objectAtIndex:0]; 
        cell.malayalamVerse.hidden = YES;
        cell.malayalamVerse.backgroundColor = [UIColor clearColor];
        cell.textLabel.font = [UIFont fontWithName:@"Georgia" size:18.0];
        cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
        cell.textLabel.numberOfLines = 0;

        //pinch for serchpage
        UIPinchGestureRecognizer *longPressRecognizer = 
        [[UIPinchGestureRecognizer alloc]
         initWithTarget:self 
         action:@selector(longPressDetected:)];
        [self.view addGestureRecognizer:longPressRecognizer];
        [longPressRecognizer release];

        //longtap for simpklepopupview


        UILongPressGestureRecognizer *longPressgesture = 
        [[UILongPressGestureRecognizer alloc]
         initWithTarget:self 
         action:@selector(longPressDetectedgesture:)];
        [self.view addGestureRecognizer:longPressgesture];
        [longPressgesture release];
        if (imagedarkbackground.hidden == NO) {

            hideviewoftab.hidden =YES;
            cell.chapterAndVerse.backgroundColor= [UIColor clearColor];
            cell.chapterAndVerse.textColor = [UIColor whiteColor];
            cell.textLabel.textColor = [UIColor whiteColor];
            cell.textLabel.highlightedTextColor = [UIColor whiteColor];
            //cell.textLabel.font = [UIFont fontWithName:@"Georgia" size:16];
        }
        else if (imagedarkbackground.hidden == YES){
            hideviewoftab.hidden =NO;
            cell.chapterAndVerse.backgroundColor= [UIColor whiteColor];
            cell.chapterAndVerse.textColor = [UIColor brownColor];
            cell.textLabel.textColor = [UIColor darkGrayColor];
            cell.textLabel.highlightedTextColor = [UIColor darkGrayColor];
        }


    }


    if(tableView == table)
    {
      UIView *myBackView = [[UIView alloc] initWithFrame:cell.frame];
         myBackView.backgroundColor = [UIColor colorWithRed:250.0 green:248.0 blue:192.0 alpha:1.0];
        [myBackView setBackgroundColor:[UIColor colorWithRed:1 green:1 blue:0.75 alpha:1]];
       cell.selectedBackgroundView = myBackView;
        [myBackView release];
        table.backgroundColor = [UIColor clearColor];
        table.separatorColor = [UIColor clearColor];
        cell.chapterAndVerse.text = [NSString stringWithFormat:@"%d",indexPath.row+1];
        cell.chapterAndVerse.font = [UIFont fontWithName:@"Georgia" size:18.0];
        cell.chapterAndVerse.frame=CGRectMake(0, 10, 30.0, 20.0);
        cell.textLabel.text =  [NSString stringWithFormat:@"  %@",[delegate.allSelectedVerseEnglish objectAtIndex:indexPath.row]];

       // cell.textLabel.textColor = [UIColor darkGrayColor];
        cell.textLabel.font = [UIFont fontWithName:@"Georgia" size:18.0];

        cell.backgroundColor = [UIColor clearColor];

    }
return cell;
}

这是单元格高度代码

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{


    CGSize textSize = [[delegate.allSelectedVerseEnglish objectAtIndex:indexPath.row] sizeWithFont:[UIFont fontWithName:@"Georgia" size:18.0 ]  constrainedToSize:CGSizeMake(290.0f,MAXFLOAT)   lineBreakMode:UILineBreakModeWordWrap];
    CGSize textSizelabel = [[NSString stringWithFormat:@"%d",indexPath.row+1] sizeWithFont:[UIFont fontWithName:@"Georgia" size:17.0 ]  constrainedToSize:CGSizeMake(290.0f,MAXFLOAT)   lineBreakMode:UILineBreakModeWordWrap];

    return textSize.height +18;
    return textSizelabel.height +18;

我的代码中是否存在导致缓慢和缓慢滚动的错误。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

以下代码几乎没有修复:

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


// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{
    return [delegate.allSelectedVerseEnglish count];
}


// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"readCell";

    readCell *cell = (readCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) 
    {

        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"readCell" owner:self options:nil]; 
        cell = [nib objectAtIndex:0]; 
        cell.malayalamVerse.hidden = YES;
        cell.malayalamVerse.backgroundColor = [UIColor clearColor];
        cell.textLabel.font = [UIFont fontWithName:@"Georgia" size:18.0];
        cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
        cell.textLabel.numberOfLines = 0;


        if (imagedarkbackground.hidden == NO) 
        {

            hideviewoftab.hidden =YES;
            cell.chapterAndVerse.backgroundColor= [UIColor clearColor];
            cell.chapterAndVerse.textColor = [UIColor whiteColor];
            cell.textLabel.textColor = [UIColor whiteColor];
            cell.textLabel.highlightedTextColor = [UIColor whiteColor];
            //cell.textLabel.font = [UIFont fontWithName:@"Georgia" size:16];
        }
        else if (imagedarkbackground.hidden == YES){
            hideviewoftab.hidden =NO;
            cell.chapterAndVerse.backgroundColor= [UIColor whiteColor];
            cell.chapterAndVerse.textColor = [UIColor brownColor];
            cell.textLabel.textColor = [UIColor darkGrayColor];
            cell.textLabel.highlightedTextColor = [UIColor darkGrayColor];
        }


    }

    //** If there is only one table then move the following case also inside the cell== nil clause with few minor changes....**/
    if(tableView == table)
    {
        UIView *myBackView = [[UIView alloc] initWithFrame:cell.frame];
        myBackView.backgroundColor = [UIColor colorWithRed:250.0 green:248.0 blue:192.0 alpha:1.0];
        [myBackView setBackgroundColor:[UIColor colorWithRed:1 green:1 blue:0.75 alpha:1]];
        cell.selectedBackgroundView = myBackView;
        [myBackView release];
        table.backgroundColor = [UIColor clearColor];
        table.separatorColor = [UIColor clearColor];
        cell.chapterAndVerse.text = [NSString stringWithFormat:@"%d",indexPath.row+1];
        cell.chapterAndVerse.font = [UIFont fontWithName:@"Georgia" size:18.0];
        cell.chapterAndVerse.frame=CGRectMake(0, 10, 30.0, 20.0);
        cell.textLabel.text =  [NSString stringWithFormat:@"  %@",[delegate.allSelectedVerseEnglish objectAtIndex:indexPath.row]];

        // cell.textLabel.textColor = [UIColor darkGrayColor];
        cell.textLabel.font = [UIFont fontWithName:@"Georgia" size:18.0];

        cell.backgroundColor = [UIColor clearColor];

    }
    return cell;
}

以更合适的方式移出以下代码,因为它与单元格或tableview无关。 另外,请在if(tableView = table)中查看您的代码。如果只有一个表,则将代码移动到适合的位置。

//pinch for serchpage
UIPinchGestureRecognizer *longPressRecognizer = 
[[UIPinchGestureRecognizer alloc]
 initWithTarget:self 
 action:@selector(longPressDetected:)];
[self.view addGestureRecognizer:longPressRecognizer];
[longPressRecognizer release];

//longtap for simpklepopupview


UILongPressGestureRecognizer *longPressgesture = 
[[UILongPressGestureRecognizer alloc]
 initWithTarget:self 
 action:@selector(longPressDetectedgesture:)];
[self.view addGestureRecognizer:longPressgesture];
[longPressgesture release];

我不确定你想在heightForRow方法中做什么,因为它返回两个不可能的值。

  

<强>更新

如果您有两个表视图,那么您可以使用以下代码,因为两个表视图将具有他们将使用的单独单元格,因此我们无需设置/重置其他属性。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"readCell";

    readCell *cell = (readCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) 
    {

        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"readCell" owner:self options:nil]; 
        cell = [nib objectAtIndex:0]; 
        cell.malayalamVerse.hidden = YES;
        cell.malayalamVerse.backgroundColor = [UIColor clearColor];
        cell.textLabel.font = [UIFont fontWithName:@"Georgia" size:18.0];
        cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
        cell.textLabel.numberOfLines = 0;


        if (imagedarkbackground.hidden == NO) 
        {

            hideviewoftab.hidden =YES;
            cell.chapterAndVerse.backgroundColor= [UIColor clearColor];
            cell.chapterAndVerse.textColor = [UIColor whiteColor];
            cell.textLabel.textColor = [UIColor whiteColor];
            cell.textLabel.highlightedTextColor = [UIColor whiteColor];
            //cell.textLabel.font = [UIFont fontWithName:@"Georgia" size:16];
        }
        else if (imagedarkbackground.hidden == YES){
            hideviewoftab.hidden =NO;
            cell.chapterAndVerse.backgroundColor= [UIColor whiteColor];
            cell.chapterAndVerse.textColor = [UIColor brownColor];
            cell.textLabel.textColor = [UIColor darkGrayColor];
            cell.textLabel.highlightedTextColor = [UIColor darkGrayColor];
        }

        if(tableView == table1)
        {
            UIView *myBackView = [[UIView alloc] initWithFrame:cell.frame];
            myBackView.backgroundColor = [UIColor colorWithRed:250.0 green:248.0 blue:192.0 alpha:1.0];
            [myBackView setBackgroundColor:[UIColor colorWithRed:1 green:1 blue:0.75 alpha:1]];
            cell.selectedBackgroundView = myBackView;
            [myBackView release];
            table.backgroundColor = [UIColor clearColor];
            table.separatorColor = [UIColor clearColor];
            cell.chapterAndVerse.text = [NSString stringWithFormat:@"%d",indexPath.row+1];
            cell.chapterAndVerse.font = [UIFont fontWithName:@"Georgia" size:18.0];
            cell.chapterAndVerse.frame=CGRectMake(0, 10, 30.0, 20.0);
            cell.textLabel.font = [UIFont fontWithName:@"Georgia" size:18.0];
            cell.backgroundColor = [UIColor clearColor];
        }
        else if (tableView == table2)
        {
            // do something if needed... else leave it
        }

    }


    if(tableView == table1)
    {

        cell.textLabel.text =  [NSString stringWithFormat:@"  %@",[delegate.allSelectedVerseEnglish objectAtIndex:indexPath.row]];

    }
    else if(tableView == table2)
    {
        // set text or changeable properties here... for table 2
    }
    return cell;
}


heightForRowAtIndexPath:

对于两个表,请使用以下代码(包含您的更改):

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{

    CGFloat height = 0.0;


    if (tableView = table1)
    {
        CGSize textSize = [[delegate.allSelectedVerseEnglish objectAtIndex:indexPath.row] sizeWithFont:[UIFont fontWithName:@"Georgia" size:18.0 ]  constrainedToSize:CGSizeMake(290.0f,MAXFLOAT)   lineBreakMode:UILineBreakModeWordWrap];
        height =  textSize.height +18;
    }
    else if (tableView = table1)
    {
        CGSize textSizelabel = [[NSString stringWithFormat:@"%d",indexPath.row+1] sizeWithFont:[UIFont fontWithName:@"Georgia" size:17.0 ]  constrainedToSize:CGSizeMake(290.0f,MAXFLOAT)   lineBreakMode:UILineBreakModeWordWrap];
        height =  textSizelabel.height +18;
    }
    return  height;    
}

谢谢,