2012-05-21 3 views
0

У меня есть табличное представление, которое имеет список параметров, которые пользователь имеет selcected (это страница редактирования).Как показать UITableViewCellAccessoryCheckmark

TableView выглядит, как показано ниже

Яблоко UITableViewCellAccessoryCheckmark

Оранжевой UITableViewCellAccessoryNone

Ананас UITableViewCellAccessoryCheckmark Banana
UITableViewCellAccessoryNone

- (void)viewDidLoad { 

    self.mySavedFruitsArray = [myDBOperations getMyFruitsList:[appDelegate getDBPath]:self.myId]; 

} 

/Customize the appearance of table view cells. 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: 
(NSIndexPath *)indexPath 
//------------------------------------------------------------------------------- 
{ 
    static NSString *CellIdentifier = @"PoemTypeCell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (cell == nil) 
    { 
     cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"MyIdentifier"]autorelease]; 

    } 

    NSDictionary *aDict = [self.myFruitsArr objectAtIndex:indexPath.row]; 
    NSString *aValue = [aDict objectForKey:@"value"]; 
    NSString *aId = [aDict objectForKey:@"key"]; 
    cell.textLabel.text = aValue; 
    cell.accessoryType = UITableViewCellAccessoryNone; 

    NSDictionary *aSavedDict = [self.mySavedFruitsArray objectAtIndex:indexPath.row]; 
    NSString *Value = [aSavedDict objectForKey:@"value"]; 
    NSString *Id = [aSavedDict objectForKey:@"key"]; 
    if (aId == Id){ 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 
    }else 
    { 
     cell.accessoryType = UITableViewCellAccessoryNone; 
    }  

    return cell; 

} 

mySavedFruitsArray - он содержит выбранные пользователем фрукты.

myFruitsArr - это есть общий список фруктов

Теперь я хотел бы знать, как отображать UITableViewCellAccessoryCheckmark для ячейки, которая соответствует с mySavedFruitsArray.

Я имею в виду, что в этом окне редактирования я хочу отобразить список фруктов с выбранным пользователем параметром.

Pls, дайте мне знать, как это сделать.

Я пробовал, как это, но не использовать.

/ Customize the appearance of table view cells. 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: 
(NSIndexPath *)indexPath 
//------------------------------------------------------------------------------- 
{ 
    static NSString *CellIdentifier = @"PoemTypeCell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (cell == nil) 
    { 
     cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"MyIdentifier"]autorelease]; 

    } 

    NSDictionary *aDict = [self.myFruitsArr objectAtIndex:indexPath.row]; 
    NSString *aValue = [aDict objectForKey:@"value"]; 
    NSString *aId = [aDict objectForKey:@"key"]; 
    cell.textLabel.text = aValue; 
    cell.accessoryType = UITableViewCellAccessoryNone; 

    NSDictionary *aSavedDict = [self.mySavedFruitsArray objectAtIndex:indexPath.row]; 
    NSString *Value = [aSavedDict objectForKey:@"value"]; 
    NSString *Id = [aSavedDict objectForKey:@"key"]; 
    if (aId == Id){ 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 
    }else 
    { 
     cell.accessoryType = UITableViewCellAccessoryNone; 
    }  

    return cell; 

} 

Примечание Pls self.mySavedFruitsArray не может быть равна myFruitsArr всегда (потому что пользователь может выбрать только один плод).

+0

кто-нибудь PLS помощь – user198725878

ответ

2
if (aId == Id){ 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 
    }else 
    { 
     cell.accessoryType = UITableViewCellAccessoryNone; 
    }  

сравнение строк неверно. Вы должны сравнить строки таким образом:

if([aId isEqualToString:Id]) { 
.... 
} 
+0

PLS примечание self.mySavedFruitsArray может быть не равно myFruitsArr. – user198725878

+0

И все же вы сравниваете строки без указателей вправо? – graver

+0

NSDictionary * aSavedDict = [self.mySavedFruitsArray objectAtIndex: indexPath.row]; эта строка выйдет из строя, если счет меньше, чем myFruitsArr или indexpath.row – user198725878

1

вместо проверки, если (AID == Id), который сравнивает строки как идентичные объекты, использовать, если ([Aid isEqualToString: Id]), который сравнивает строки

+0

У меня ошибка при прокрутке – user198725878

+0

, вы создаете идентификатор ячейки «PoemTypeCell», а если ячейка равна нулю, вы воссоздаете ячейку, используя другой идентификатор «MyIdentifier». попробуйте использовать один и тот же идентификатор –

0

В версии, загруженной вчера (6/8/14), UITableViewCellAccessoryCheckmark и UITableViewCellAccessoryNone недействительны. Это бросало ошибки компилятора для меня. Я думаю, вы должны использовать его в качестве перечисления, например, так:

if item.completed { 
     cell!.accessoryType = UITableViewCellAccessoryType.Checkmark 
    } else { 
     cell!.accessoryType = UITableViewCellAccessoryType.None 
    } 

С этим изменением, мой код компилируется и поведение появляется в тренажере. Извините, я не знаю, какую версию искать (UIKit?), Я новичок в разработке iOS.

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