首页 » iOS编程(第4版) » iOS编程(第4版)全文在线阅读

《iOS编程(第4版)》11.6 使用BNRImageStore

关灯直达底部

当Homepwner需要显示BNRDetailViewController对象的视图时(见图11-11),该对象需要通过当前选中的BNRItem对象的itemKey属性,从BNRImageStore对象得到相应的照片,然后将该照片放置在UIImageView对象上。

图11-11 缓存

Homepwner会在两种情况下显示BNRDetailViewController对象的视图:①当用户选中BNRItemsViewController对象的UITableView对象的某行时。②当用户关闭UIImagePickerController对象时。无论哪种情况,BNRDetailViewController对象都应该在UIImageView对象上显示当前选中的BNRItem对象的照片。将以下代码加入BNRDetailViewController.m中的viewWillAppear:。

- (void)viewWillAppear:(BOOL)animated

{

[super viewWillAppear:animated];

self.nameField.text = item.itemName;

self.serialNumberField.text = item.serialNumber;

self.valueField.text = [NSString stringWithFormat:@“%d”,

item.valueInDollars];

static NSDateFormatter *dateFormatter = nil;

if (!dateFormatter) {

dateFormatter = [[NSDateFormatter alloc] init];

dateFormatter.dateStyle = NSDateFormatterMediumStyle;

dateFormatter.timeStyle = NSDateFormatterNoStyle;

}

self.dateLabel.text = [dateFormatter stringFromDate:item.dateCreated];

NSString *itemKey = self.item.itemKey;

// 根据itemKey,从BNRImageStore对象获取照片

UIImage *imageToDisplay =

[[BNRImageStore sharedStore] imageForKey:itemKey];

// 将得到的照片赋给UIImageView对象

self.imageView.image = imageToDisplay;

}

如果针对指定的键,BNRImageStore对象没有包含相应的照片(或者选中的BNRItem对象的itemKey属性是nil),那么UIImageView对象的对象变量image的值会是nil。当image属性是nil时,UIImageView对象不会有任何显示。

构建并运行应用,添加一个新的BNRItem对象,然后进入其详细界面。点击工具栏上的相机按钮,为该对象拍摄一张照片,Homepwner应该能正确地显示拍摄的照片。