2012-05-21 45 views
0

我有一個tableview有一個用戶選擇的選項列表(這是一個編輯頁面)。如何顯示UITableViewCellAccessoryCheckmark

的實現代碼如下看起來如下

蘋果UITableViewCellAccessoryCheckmark

橙色UITableViewCellAccessoryNone

菠蘿香蕉UITableViewCellAccessoryCheckmark
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 - 這有水果

現在我想知道如何爲細胞與mySavedFruitsArray匹配顯示UITableViewCellAccessoryCheckmark的共同名單。

我的意思是,在這個編輯視圖中,我想用用戶選擇的選項顯示水果列表。

請讓我知道如何做到這一點。

我試過這樣,但沒用。

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

} 

請注意self.mySavedFruitsArray可能不等於myFruitsArr總是(因爲用戶可以選擇只一個水果)。

+0

有人請求幫助 – user198725878

回答

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

字符串比較錯誤。你應該比較字符串這樣:

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

請注意self.mySavedFruitsArray可能不等於myFruitsArr。 – user198725878

+0

然而你正在比較字符串而不是指針嗎? – graver

+0

NSDictionary * aSavedDict = [self.mySavedFruitsArray objectAtIndex:indexPath.row]; 當count小於myFruitsArr或indexpath.row時,這條線會崩潰 – user198725878

1

而不是檢查,如果(AID ==編號),該字符串作爲相同的對象進行比較,如果 使用([援助isEqualToString:ID]),它比較字符串

+0

滾動時我崩潰了 – user198725878

+0

您正在創建一個單元標識符「PoemTypeCell」,如果單元格爲零,則使用另一個標識符「MyIdentifier」重新創建單元格。嘗試使用相同的標識符 –

0

在昨天(6/8/14)下載的版本中,UITableViewCellAccessoryCheckmarkUITableViewCellAccessoryNone無效。它爲我拋出編譯器錯誤。我想你應該把它作爲一個枚舉,就像這樣:

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

隨着這一變化,我的代碼編譯和行爲出現在模擬器。 對不起,我不知道要查找哪個版本(UIKit?),我是iOS開發新手。