0

NSUserDefaultsからロードされたオブジェクトが入力されたテーブルビューがあります。

具体的には、ユーザーが1つのView Controllerのボタンを押すと、文字列がNSUserDefaultsに読み込まれ、次に配列に読み込まれ、最終的にテーブルビューに入力されます。

NSUserDefaultsからロードされる文字列に応じて、各テーブルビューセルに画像をロードするにはどうすればよいですか?

NSUserDefaultsに画像を保存したくないのは、これは良い考えではないことを知っているからです。

私に何ができる?

お時間をいただきありがとうございます(そして初心者を助けてください)!


19FEB13を更新

NSUserDefaultsにロードしている文字列は、「ARCX」などのオブジェクトの名前です。

現時点では、さまざまなコードを試しましたが、誤解/知識不足(またはその両方)があるように思われる段階にあります。

UITableViewCell *XCell = [tableView cellForRowAtIndexPath:IndexPath];
NSString *content = Xcell.textLabel.text;

if ([content isEqualToString:@"ARCX"]) [UIImage *Image = [UIImage imageNamed @"ARCX.png"]];

明らかに、このコードからエラーが発生しています。

お役に立てば幸いです。


20FEB13を更新

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
     NSString *string = [myOBJArray objectAtIndex:indexPath.row];
     static NSString *CellIdentifier = @"XCell";
     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
     if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        UIView *cellbackground = [[UIView alloc] initWithFrame:CGRectZero];
        cellbackground.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"MSP cell bg MK2.png"]];
        cell. backgroundView = cellbackground;

}

cell.textLabel.textColor = [UIColor yellowColor ];
cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:24.0];
cell.textLabel.text = string;


 UITableViewCell *XCell = [tableView cellForRowAtIndexPath:indexPath];
 NSString *content = XCell.textLabel.text;

 if ([content isEqualToString:@"ARCX"]) [UIImage *Image = [UIImage imageNamed: @"ARCX.png" ]];


cell.imageView.image = Image;

     return cell;

}

CellForRowAtIndexPathに最初に投稿したコードはありましたが、実装に何かが欠けていることはわかっています(明らかに機能しないためです!)。

御時間ありがとうございます!


2013年2月19日更新

Iこれは私の現在のCellForRowAtIndexPathです。エラーはありませんが、セルに画像はありません。私は何が欠けていますか?

画像ビューを追加する必要がありますか?現在、カスタムセルではなく、「基本」セルを使用しています。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *string = [myObjArray objectAtIndex:indexPath.row];
static NSString *CellIdentifier = @"MSCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    UIView *cellbackground = [[UIView alloc] initWithFrame:CGRectZero];
    cellbackground.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"MSP cell bg MK2.png"]];
    cell. backgroundView = cellbackground;
}

cell.textLabel.textColor = [UIColor blackColor ];
cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:24.0];
cell.textLabel.text = string;

if ([string isEqualToString:@"ARCX"])

cell.imageView.image = [UIImage imageNamed: @"ARCX.png"];

else if ([string isEqualToString:@"WPX"])

    cell.imageView.image = [UIImage imageNamed:@"WPX.png"];


 return cell;

}

御時間ありがとうございます!

4

1 に答える 1

1
UITableViewCell *XCell = [tableView cellForRowAtIndexPath:indexPath];
NSString *content = XCell.textLabel.text;

Please remove this piece of code, as it will call cellForRowAtIndexPath again and again. You already have the image name as string

NSString *string = [myOBJArray objectAtIndex:indexPath.row];

So change the code like below.

if ([string isEqualToString:@"ARCX"]) 
        UIImage *Image = [UIImage imageNamed: @"ARCX.png"];
cell.imageView.image = Image;
于 2013-02-21T04:06:52.027 に答える