我的主要ViewController
已嵌入navigation controller
我的ViewController
CollectionView
当我点击custom collectionViewCell
时,它会转到下一个View Controller
}使用push segue
并在我的第二个View Controller
中拥有UIImage
属性。
点击Collection ViewCell
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"Why did you called me?");
DetailViewViewController *dvc = [[DetailViewViewController alloc] init];
ALAsset *asset = self.assets[indexPath.row];
ALAssetRepresentation *defaultRep = [asset defaultRepresentation];
UIImage *image = [UIImage imageWithCGImage:[defaultRep fullScreenImage] scale:[defaultRep scale] orientation:0];
[dvc initWithImage:image];
}
initWithImage
方法
-(id) initWithImage:(UIImage *)imageName {
self = [super init];
NSLog(@"inithWithImage Called");
self.image = imageName;
return self;
}
问题:initWithImage
之前调用问题viewDidLoad
。在initWithImage方法中,我将我的属性UIImage
设置为image
。但是当我办理登机手续时viewDidLoad
我的媒体资源UIImage
等于null
我该如何解决这个问题?
答案 0 :(得分:2)
您以错误的方式初始化DetailViewViewController
。尝试:
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
ALAsset *asset = self.assets[indexPath.row];
ALAssetRepresentation *defaultRep = [asset defaultRepresentation];
UIImage *image = [UIImage imageWithCGImage:[defaultRep fullScreenImage]
scale:[defaultRep scale]
orientation:0];
DetailViewViewController *dvc = [[DetailViewViewController alloc] initWithImage:image];
...
}
答案 1 :(得分:0)
图像需要是segue使用的DetailViewController实例的属性,请查看“准备segue”
问题在于,尽管您正在使用segues,但您手动分配/初始化控制器并设置其属性(当然这与将要呈现的实例完全不同)。
答案 2 :(得分:0)
只需在DetailViewViewController中声明一个变量,并在分配相同实例的同时使用Image pathstring / image名称进行初始化。在使用pathstring / image名称的DetailViewViewController的viewdidload中,将其设置为imageview组件。
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"Why did you called me?");
DetailViewViewController *dvc = [[DetailViewViewController alloc] init];
//get the path of image
....
....
dvc.variablename = imagepath / imagename
}
希望这有帮助。