按下按钮将照片发送到下一个屏幕

时间:2017-09-03 02:23:51

标签: ios objective-c iphone uiimageview uiimage

所以我正在构建一个IOS应用程序,我有一个显示的照片库,当你按下它注册的照片时,你可以用那张照片做点什么。基本上我需要的是当用户按下那张照片时,我需要它来打开另一个屏幕(segue),我需要在新屏幕上知道按下的特定照片是什么,并将屏幕大小的UIViewController设置为该照片。我目前拥有的代码是

      PhotoEditorViewController *editor = [[PhotoEditorViewController alloc] init];
ALAsset *asset = self.assets[indexPath.row];
ALAssetRepresentation *defaultRep = [asset defaultRepresentation];
editor.img = [UIImage imageWithCGImage:[defaultRep fullScreenImage] scale:[defaultRep scale] orientation:UIImageOrientationRight];
NSLog(@"Photo Pressed");
NSLog(@"%@", editor.img);

[self presentModalViewController:editor animated:YES];

所以目前正在做的是获取按下的照片并设置我的UIImage var。 " IMG"当那个图像然后当segue被调用时,我可以在其他屏幕上看到viewDidLoad方法,该图像传输但由于某种原因我无法将该图像设置为UIImageViwer。

NSLog输出:

在屏幕1和屏幕2上都显示UIImage 0x #######

这使我相信照片ID信息正在转移,但它没有更新uiimageview

    ViewDidLoad
        {
             NSLog(@“%hhu%”, editorPhoto);
             [image setImage:editorPhoto];
        }

2 个答案:

答案 0 :(得分:0)

使用'准​​备Segue'在ViewControllers之间传递数据的方法:

在PhotoEditorViewController中创建一个UIImage来保存传递的图像

@IBOutlet weak var passedImage: UIImageView!

在你的第一个ViewController中

Swift 3.0

@IBOutlet weak var selectedImage: UIImageView!

override fun prepare(for segue: UIStorybordSegue, sender: Any?) {
      //set destination to PhotoEditorViewController
      if let destination = segue.destination as? 
      PhotoEditorViewController {

      //send image to 'passedImage' in PhotoEditorViewController
      destination.passedImage = selectedImage.image
}

<强> Objectivce-C

请参阅How to pass prepareForSegue: an object

答案 1 :(得分:0)

在nextViewController.h文件中创建属性。

@property (strong, nonatomic) UIImageView *imgView;

从这里传递图像。

- (IBAction)nextView:(UIButton *)sender {
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    myViewController *VC = [storyboard instantiateViewControllerWithIdentifier:@"myViewControllerID"];
    VC.imgView.image = [UIImage imageNamed:@"image.jpg"];
    [self.navigationController pushViewController:VC animated:YES];
}