0

PListを使用して、テーブルビューからプッシュされたViewControllerからプッシュされたViewControllerにデータを入力しようとしています。もっと簡単に:

TableViewController-> DetailViewController-> 2ndDetailViewController(<-これは私が入力しているものです)

私がこれを行おうとしている方法は、ユーザーがテーブルビューの行をクリックしたときに整数を値に設定することです。次に、その整数の値を使用してPListの正しい値を指し、対応する文字列を引き出します。2番目のViewControllerで、UIImageViewにPListからの画像を入力しようとしています。これが私のdidSelectRowAtIndexPathのコードです:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
     DealsDetailViewController *dealsDetail = [[DealsDetailViewController alloc]initWithNibName:@"DealsDetailViewController" bundle:nil];
     dealsDetail.dealsImageString = [[self.dealsArray objectAtIndex:indexPath.row] objectForKey:@"Image"];
     dealsDetail.dealsLabelString = [[self.dealsArray objectAtIndex:indexPath.row] objectForKey:@"Description"];
     dealsDetail.title = [[self.dealsArray objectAtIndex:indexPath.row] objectForKey:@"Name"];     

if ([[dealsArray objectAtIndex:indexPath.row] isEqual:@"Deal #1"]) {
    dealsDetail.dealsInt = 0;
    [dealsDetail setTitle:[dealsArray objectAtIndex:indexPath.row]];
}

if ([[dealsArray objectAtIndex:indexPath.row] isEqual:@"Deal #2"]) {
    dealsDetail.dealsInt = 1;
    [dealsDetail setTitle:[dealsArray objectAtIndex:indexPath.row]];
}

if ([[dealsArray objectAtIndex:indexPath.row] isEqual:@"Deal #3"]) {
    dealsDetail.dealsInt = 2;
    [dealsDetail setTitle:[dealsArray objectAtIndex:indexPath.row]];
}

[self.navigationController pushViewController:dealsDetail animated:YES];
[dealsDetail release];

すべてが正しく入力されます。テーブルビューコントローラ(ボタンをクリック時)とDealsDetailViewControllerのviewDidLoadメソッドの両方でdealsDetail.dealsIntの値をNSLogしようとしました。どちらの場合も、どの行をクリックしても「0」の値を返します。構文のどこが間違っていますか?

編集--------ログアウトすると次のようになります。

NSLog(@"%@",[dealsArray objectAtIndex:indexPath.row]);


2011-11-28 17:40:59.092 Stores Tab Bar[7386:207] {
    Barcode = "SampleBarCode3.png";
    Description = "Here's the deal 3";
    Image = "FritoTest.png";
    Name = "Deal #3";
    Thumbnail = "dollars.png";
}

正しくクリックされたオブジェクトのPListコンテンツをログアウトします。したがって、適切な情報を取得しています(これは、テーブルビューと詳細ビューに正しく入力されていたためだと思います...)

4

1 に答える 1

2
if ([[dealsArray objectAtIndex:indexPath.row] isEqual:@"Deal #1"]) {
    dealsDetail.dealsInt = 0;
    [dealsDetail setTitle:[dealsArray objectAtIndex:indexPath.row]];
}

これは、 内でのオブジェクトの以前の使用と矛盾しているようですdealsArray。上記の行の辞書のように見えます。

dealsDetail.dealsImageString = [[self.dealsArray objectAtIndex:indexPath.row] objectForKey:@"Image"];

それでもここでは、それを静的文字列と比較しています。何が起こっているかというと、これらの if 条件のいずれにも一致しないため、ゼロのままです。

次のものが必要です。

if ([[[dealsArray objectAtIndex:indexPath.row] objectForKey:@"Name"] isEqualToString:@"Deal #1"]) {

注: 辞書から別の objectForKey (上記の編集によるとキーは @"Name") を取得してisEqualToString:おり、文字列を比較する正しい方法も使用しています。

于 2011-11-28T22:21:50.130 に答える