2012-07-03 3 views
0

У меня есть пользовательский UITableViewCell с WishInfoTextView, просто подкласс UILabel.Предотвращение дублирования пользовательского UITableViewCell

static NSString *CellIdentifier = @"Cell"; 
NSMutableDictionary* item = [myWishes objectAtIndex: indexPath.row]; 

WishTableViewCell* cell = [tableView dequeueReusableCellWithIdentifier: CellIdentifier]; 
if(cell == nil) { 
    cell = [[WishTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    [cell setSelectionStyle: UITableViewCellEditingStyleNone]; 
    [cell setWishInfo: item]; 
}  

WishInfoTextView* infoText = (WishInfoTextView*)[cell viewWithTag: kTableInfoText]; 
infoText.text = [item objectForKey:@"name"]; 

NSLog(@"\nTaggedText: %@\nNormalText: %@", infoText.wishName, [item objectForKey:@"name"]); 

Только проблема в том, что у меня есть дублированные ячейки. Я кое-что прочитал об установке тегов. Но если я получаю доступ к своей метке по его тегу, ничего не меняется.

ответ

1

Вы используете [email protected]"name" каждый раз, когда хотите ячейку. Таким образом, вы всегда будете получать то же самое. Если у вас есть массив строк, используйте что-то вроде [arrayName objectAtIndex:indexPath.row], чтобы получить разные значения.

Например, когда я заполнить таблицу из массива я использую

NSArray *nameSection = [appD.data objectForKey:key]; 
cell.textLabel.text = [nameSection objectAtIndex:indexPath.row]; 

appD.data это получил от

NSString *DataPath = [Path stringByAppendingPathComponent:@"Primary.plist"]; 
NSDictionary *data = [[NSDictionary alloc] initWithContentsOfFile:DataPath]; 

Где Primary.plist является

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>First type</key> 
    <array> 
     <string>object1</string> 
     <string>object2</string> 
     <string>object3</string> 
    </array> 
    <key>Second type</key> 
    <array> 
     <string>thing1</string> 
     <string>thing2</string> 
     <string>thing3</string> 
    </array> 
</dict> 
</plist> 
+0

статический NSString * CellIdentifier = @ "Cell"; NSMutableDictionary * item = [myWishes objectAtIndex: indexPath.row]; извините, эта часть выпала из кодового блока. Так что это не проблема – reapertjuh

+0

Это то, что вы используете? Все зависит от структуры вашего plist – Dustin

+0

Потому что это противоположный порядок от моего примера – Dustin

Смежные вопросы