将图像加载到另一个View Controller

时间:2014-06-08 17:27:32

标签: ios image

我有一个绘图应用程序,首先选择一个类别。每个类别都有自己的绘图模板。如何获取secondViewController,以加载正确的模板?选择的类别是firstViewController中的一个按钮。

我设法给每个segue一个自己的标识符。然后什么? 我只找到解析数据或图像的方法的示例。但我不希望它解析。我希望它只在secondViewController上加载图像。

SecondViewController.h文件

@property (strong, nonatomic) UIImage *theCatImage;

SecondViewController.m文件

@interface secondViewController()

@property (weak, nonatomic) IBOutlet UIImageView *image;

@end

@implementation secondViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.image.image = self.theCatImage;

}

ViewController.h文件

#import <UIKit/UIKit.h>
#import "cat01ViewController.h"

@interface ikzieikzieAppViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIImageView *newImage;

@end

ViewController.m文件

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

if ([segue.identifier isEqualToString:@"vervoer"]) {
    cat01ViewController *secondView = (cat01ViewController *)segue.destinationViewController;
    // dont know what to send here... i tried to hide and show a image like this;
    secondView.theCatImage = self.newImage;
}

}

修改 上面的代码不起作用,我也不想将图像从一个视图控制器发送到另一个视图控制器。 这就是我想要的; 在firstViewController上,用户可以从四个不同的类别中进行选择。每个类别都将显示自己的绘图模板,并在绘图最后发送到解析数据库时给出自己的ID。 那么,设置它的最佳方法是什么?

*** ***解

最终,这就是我解决它的方式。

的ViewController

 -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"vervoer"]) {

    UIImage *image = [UIImage imageNamed:@"vervoer.png"];
    cat01ViewController *vc = [segue destinationViewController];
    vc.showImage = image;
}

else if ([segue.identifier isEqualToString:@"huis"]) {

    UIImage *image = [UIImage imageNamed:@"huis.png"];
    cat01ViewController *vc = [segue destinationViewController];
    vc.showImage = image;
}

else if ([segue.identifier isEqualToString:@"mode"]) {

    UIImage *image = [UIImage imageNamed:@"vinkje.png"];
    cat01ViewController *vc = [segue destinationViewController];
    vc.showImage = image;
}

else if ([segue.identifier isEqualToString:@"eten"]) {

    UIImage *image = [UIImage imageNamed:@"bord.png"];
    cat01ViewController *vc = [segue destinationViewController];
    vc.showImage = image;
}

}

SecondViewController

@synthesize catImage, showImage;

- (void)viewDidLoad
{

   [catImage setImage:showImage];

   [super viewDidLoad];
}

1 个答案:

答案 0 :(得分:0)

您要做的是在SecondViewController上添加一个属性:

@property (nonatomic) int category;

然后在FirstViewController

添加属性

@property (nonatomic) int chosenCategory;

将此项设置为用户选择的类别。

然后在你的seque代码中:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
  cat01ViewController *secondView = (cat01ViewController *)segue.destinationViewController;
  [secondView setCategory:self.chosenCategory];
}

这将告诉VC需要绘制哪个图像。然后调用解析库方法,根据viewDidLoadSecondViewController方法中选择的ID(类别)检索图像:

SecondViewController

- (void)viewDidLoad
{
  [super viewDidLoad];

  self.image.image = [ParseLibrary getImageForCategory:self.chosenCategory];

}