I’m not sure I’m phrasing my question correctly, so here’s the details.
I’m using a UITableView to display the list of available fonts. When the list is dsiplayed,
only about 12 rows show at a time, so if the previously selected font is not yet show, I can’t select it when first showing the view.
What I’d like is to have the cell selected and shown in the center of the list when the view appears. But since the UITableView only loads data as needed, this is the best I can get:
EDITED
I’ve tried this but it doesn’t work (the cell is only briefly selected while scrolling):
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell==nil){
cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
[cell.textLabel setText:[fontArray objectAtIndex:indexPath.row]];
[cell.textLabel setFont:[UIFont fontWithName:[fontArray objectAtIndex:indexPath.row] size:16]];
[cell setSelectionStyle:UITableViewCellSelectionStyleBlue];
//select the cell/row if it matches the current font
if([cell.textLabel.text isEqualToString:currentFontName]){
cell.selected=YES;
}
NSLog(@"returning cell %@",cell.textLabel);
return cell;
}
I found the solution in another thread – the problem is related to reusing cells. If I do not re-use cells, then everything works properly. Re-using cells also caused problems with multiple checkmarks appearing when only one item is selected. Thanks to those who contributed.
EDIT: If I should not be answering my own questions please tell me…but also tell me the proper way to resolve the question!
EDIT 2: This thread also helped
UITableViewCell going black when selected programmatically