2012-01-19 45 views
1

我在视图中的tableview电池,其中有一些文字的bible.but滚动不是诗句都平滑我有UITableView的慢速滚动中的UITableViewCell

- (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; 

在我的代码中是否有任何错误导致缓慢和缓慢的滚动。 在此先感谢。

回答

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; 
} 

搬出以下更适合的方法的代码,因为它无关,与细胞或实现代码如下。 另请查看您的代码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的方法做,因为它返回两个值是不可能的。

更新

如果你有两个tableviews那么你可以使用下面的代码,因为这两个tableviews会,他们将利用,所以我们不需要设置/重置其他性质不同的细胞。

- (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;  
} 

感谢,

+0

但我有两个的tableview细胞在一个视图这就是为什么我把这种情况下,另一个tableview中是命名tab.and什么是heightforrow问题请expalin.thanks – stackiphone

+0

这是正确的方法来设置Tableview单元格的高度根据文本大小? – stackiphone

+0

请参阅最新的答案。当你返回高度时,第二个返回将永远不会执行,因为函数在它遇到的第一个返回语句中完成它的执行。 – Ravin