0

ユーザーが選択したオプションのリストを含むテーブルビューがあります(編集ページです)。

テーブルビューは次のようになります

アップル 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- これには果物の共通リストがあります

UITableViewCellAccessoryCheckmarkと一致するセルを表示する方法を知りたいmySavedFruitsArrayです。

つまり、この編集ビューでは、ユーザーが選択したオプションで果物のリストを表示したいと考えています。

その方法を教えてください。

私はこのように試しましたが、役に立ちませんでした。

/ 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 と等しくない場合があることに注意してください (ユーザーは 1 つの果物しか選択できないため)。

4

3 に答える 3

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

文字列比較が間違っています。この方法で文字列を比較する必要があります。

if([aId isEqualToString:Id]) {
....
}
于 2012-05-21T10:01:13.273 に答える
1

文字列を同一のオブジェクトとして比較する if ( aId == Id ) をチェックする代わりに、文字列を比較する if ([aID isEqualToString:Id]) を使用します

于 2012-05-21T10:01:33.873 に答える
0

昨日(2014 年 6 月 8 日)ダウンロードしたバージョンでは、有効ではありませんUITableViewCellAccessoryCheckmarkUITableViewCellAccessoryNoneそれは私のためにコンパイラエラーを投げていました。次のように、列挙型として使用することになっていると思います。

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

この変更により、コードがコンパイルされ、動作がシミュレーターに表示されます。申し訳ありませんが、どのバージョンを参照すればよいかわかりません (UIKit?)。iOS 開発は初めてです。

于 2014-06-08T23:55:15.130 に答える