0

plist ライブラリ内の各アイテムのラベルと画像を取得して、[詳細] タブに表示しようとしています。

これは、plist辞書を機能させることができるテーブルビューの写真です。画像の配列と配列または項目。(ex item 0 は、thermostat.jpg と Thermostat ラベルの両方です。

ここに画像の説明を入力

これは、セルをクリックしたときの詳細ビューの写真です。セルとサーモスタットの画像からラベルを引き出します。

ここに画像の説明を入力

ただし、plist (トイレ) の項目 1 をクリックすると、トイレの名前が表示されますが、サーモスタットの画像は表示されます。そのようです。

ここに画像の説明を入力

これがdetailviewcontrollerの私のコードです

the.h

#import <Foundation/Foundation.h>

@interface DetailViewController : UIViewController
{
IBOutlet UIScrollView *scrollView;

}

@property (nonatomic, strong) IBOutlet UILabel *itemLabel;//Name of that view
@property (nonatomic, strong) NSString *itemName;

@property (nonatomic, strong) IBOutlet UIImageView *myImageView; //Image View
@property (strong, nonatomic) IBOutlet UILabel *myTextView; //Description View

@end

そしてM

#import "DetailViewController.h"

@interface DetailViewController ()

@end

@implementation DetailViewController

@synthesize itemLabel;
@synthesize itemName;
@synthesize myImageView;
@synthesize myTextView;


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // Custom initialization
}
return self;
}

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.


itemLabel.text = itemName;
//**************SCROLL VIEW*************
[scrollView setScrollEnabled:YES];
[scrollView setContentSize:CGSizeMake(320,960)];
scrollView.contentInset=UIEdgeInsetsMake(0.0,0.0,90.0,0.0);


////I know below this is the Problem, BUT im not sure what its supposed to be?////
NSDictionary *picturesDictionary = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle     mainBundle] pathForResource:@"repairlist" ofType:@"plist"]];
NSArray *imageArray = [picturesDictionary objectForKey:@"Thumbnail"];
myImageView.image = [UIImage imageNamed:[imageArray objectAtIndex:0]];

}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

@end

全体として、そのセルをクリックしたときに画像が正しく表示されるようにしようとしています

これは、使用している私の plist im のイメージです。

ここに画像の説明を入力

私はすでにTableViewControllerにこれを持っています

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"ItemListCell"]) {
    DetailViewController *destViewController = segue.destinationViewController;

    NSIndexPath *indexPath = nil;

    if ([self.searchDisplayController isActive]) {
        indexPath = [self.searchDisplayController.searchResultsTableView     indexPathForSelectedRow];
        destViewController.itemName = [searchResults objectAtIndex:indexPath.row];


    } else {
        indexPath = [self.myTableView indexPathForSelectedRow];
        destViewController.itemName = [repairList objectAtIndex:indexPath.row];
        //destViewController.textView = [descrip objectAtIndex:indexPath.row];
    }
  }

}
4

1 に答える 1

0

これがあなたの問題です、

myImageView.image = [UIImage imageNamed:[imageArray objectAtIndex:0]];

常に同じインデックスの 0 を画像に設定します。したがって、論理的には、常に同じ画像が表示されます。DetailViewControllerしたがって、必要なのは、その情報をプッシュしてに渡す前に、どのセルが選択されたかを検出する必要があるということですDetailViewController。次に、その情報を使用して、に適切な画像を表示する必要がありますDetailViewController

まず、 でプロパティを宣言する必要がありますDetailViewController.h

@property int selectedRow;

このコード行も変更します

myImageView.image = [UIImage imageNamed:[imageArray objectAtIndex:0]];

myImageView.image = [UIImage imageNamed:[imageArray objectAtIndex:self.selectedRow]];

次に、あなたのTableViewController.m

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([[segue identifier] isEqualToString:@"YourSegueIdentifier"]) {
        NSIndexPath *selectedRowIndex = [self.tableView indexPathForSelectedRow];
        DetailViewController *detailViewController = [segue destinationViewController];
        detailViewController.selectedRow = [dataController objectInListAtIndex:selectedRowIndex.row];
    }
}
于 2013-09-13T00:21:41.457 に答える