Ida*_*dan 14 iphone uitableview ios
我正在尝试从表格视图中获取特定单元格,以便我可以更改它的标签并停止活动指示器.
我遇到的问题是cellForRowAtIndexPath返回零.
我的表视图只有一行.
代码:
- (id) initWithNibName: (NSString*) nibNameOrNil bundle: (NSBundle*) nibBundleOrNil
{
    self = [super initWithNibName: nibNameOrNil bundle: nibBundleOrNil];
    if (self) 
    {
        numberOfRows = 1;
    }
    return self;
}
- (NSInteger) tableView: (UITableView*) tableView numberOfRowsInSection: (NSInteger) section
{
    return numberOfRows;
}
-(void) stopCellIndicator
{
    LiveUserFeedCell* cell = (LiveUserFeedCell*)[self.liveFeed cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];  
    [cell.activityIndicator stopAnimating];
    cell.middleLabel.text = @"N/a";
}
- (UITableViewCell*) tableView: (UITableView*) tableView cellForRowAtIndexPath: (NSIndexPath*) indexPath
{
    static NSString *CellIdentifier = @"UserFeedCell";
    LiveUserFeedCell *cell = (LiveUserFeedCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"LiveUserFeedCell" owner:self options:nil];
        cell = (LiveUserFeedCell *)[nib objectAtIndex:0];
    }
    [cell.imgView setImage:[TUNinePatchCache imageOfSize:cell.imgView.frame.size forNinePatchNamed:@"bg_home_newsfeed_normal"]];
    if (shouldDisplayLoading == NO)
    {
        NSArray* songs = homeScreen.recentPlaybacks.songs;
        TWSong* song = [songs objectAtIndex:index];
        cell.middleLabel.text = @"";
        [cell.activityIndicator stopAnimating];
        UIFont *font = [UIFont fontWithName:@"Trebuchet MS" size:14];                       
        NSString* kText =[NSString stringWithFormat:@"<b>%@</b> is listening to %@ by %@",song.user,song.title,song.artist];
        for(int i = 14; i > 0; i=i-1)
        {
            // Set the new font size.
            font = [font fontWithSize:i];
            // You can log the size you're trying: NSLog(@"Trying size: %u", i);
            /* This step is important: We make a constraint box 
             using only the fixed WIDTH of the UILabel. The height will
             be checked later. */ 
            CGSize constraintSize = CGSizeMake(cell.isWatching.frame.size.width, MAXFLOAT);
            // This step checks how tall the label would be with the desired font.
            CGSize labelSize = [kText sizeWithFont:font constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
            /* Here is where you use the height requirement!
             Set the value in the if statement to the height of your UILabel
             If the label fits into your required height, it will break the loop
             and use that font size. */
            if(labelSize.height <= cell.isWatching.frame.size.height)
                break;
        }
        cell.isWatching.font = font;
        cell.isWatching.text = [TTStyledText textFromXHTML:kText lineBreaks:YES URLs:YES];
        cell.isWatching.textAlignment = UITextAlignmentCenter;
        ++index;
        if (index == [songs count])
            index=0;
    }
    else
    {       
        [cell.activityIndicator startAnimating];
    }
    return cell;
}
但是,如果我做这样的事情,我会得到一个有效的单元格:
NSArray *indexPaths = [NSArray arrayWithObjects: 
                       [NSIndexPath indexPathForRow:0 inSection:0],
                       nil];
numberOfRows = 0;
[self.liveFeed deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationLeft];
numberOfRows = 1;
[self.liveFeed insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationRight];
LiveUserFeedCell* cell = (LiveUserFeedCell*)[self.liveFeed cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];  
[cell.activityIndicator stopAnimating];
cell.middleLabel.text = @"N/a";
知道如何解决这个问题吗?(也许默认的第一个单元格不在第0行第0部分?)
And*_*lla 34
值得一提的是,如果单元格不可见,cellForRowAtIndexPath:也将返回nil.
线程时尤其如此......
Ste*_*son 15
我正在cellForRowAtIndexPath返回nil并且它的原因是我在UITableView必须没有完全初始化和填充的方法中调用它.一旦我将呼叫转移cellForRowAtIndexPath到我的电话,-(void)viewDidAppear:(BOOL)animated我的电池就正确地返回了.
我遇到了同样的问题,cellForRowAtIndexPath返回nil,原因相当愚蠢.在tableView:cellForRowAtIndexPath:我称为呼吁方法,它调用方法[self.tableView cellForRowAtIndexPath:indexPath].(重用现有代码,并向下游移动一些逻辑.)
事实证明,该单元尚不可用于cellForRowAtIndexPath:返回.你需要做你所有的业务修改单元格,tableView:cellForRowAtIndexPath:或者,我想,通过*cell.
Ida*_*dan -6
显然问题是当我查询单元格时 tableView 尚未配置。
| 归档时间: | 
 | 
| 查看次数: | 23243 次 | 
| 最近记录: |