1

首先,我是 XCode 和编程新手,而且我的英语并不完美。我有 2 个视图控制器,L1ViewController 和 ImageViewController。在 L1ViewController 中,我有几个以图像为背景的按钮。我想要做的是,当您单击一个按钮时,该操作会将密码和图像传递给 Image View 控制器。在 ImageViewController 中,我有一个 UITextfield 和一个 UIImageView。传递密码字符串工作正常。但是通过图像似乎比我想象的要难。UIImageView 不显示图像。

在我的 L1ViewController.h 我创建了一个

    -(IBAction)img1; 

在我的 L1ViewController.m 中,这是传递图像和密码字符串的代码:

    -(IBAction)img1;
{
ImageViewController *img = [[ImageViewController alloc] initWithImage:[UIImage imageNamed:@"myimage.jpg"] AndAnswerString:@"mypassword"];   
[self presentModalViewController:img animated:NO];
}

在我的 ImageViewController 我有这个代码来接收字符串和图像:

-(id)initWithImage:(UIImage *)inImage AndAnswerString:(NSString *)inAnswerString
{
    if (self = [super init])
    {
        [inImage release];
        [self setImage:inImage];
        [self setAnswerString:inAnswerString];

    }
    return self;
} 
-(void)setImage:(UIImage *)inImage
{
[inImage release];
[logoField setImage:inImage]; 
}

-(void)setAnswerString:(NSString *)inAnswerString
{
answerString = inAnswerString;
}

在我的 ImageViewController.h 我有

@interface ImageViewController : UIViewController { 
IBOutlet UITextField *answerField;
IBOutlet UIImageView *logoField;

NSString *answerString;
 }

@property (nonatomic, retain)NSString *logo;
-(id)initWithImage:(UIImage *)inImage AndAnswerString:(NSString *)inAnswerString;
-(void)setImage:(UIImage *)inImage;
-(void)setAnswerString:(NSString *)inAnswerString;

-(IBAction)enterAnswer;
-(IBAction)back;

为什么我的答案字符串工作正常但显示我的 ImageViewController 没有图像?同样,我是 XCode 的新手,也许这只是一个愚蠢的错误。提前致谢!

4

3 回答 3

1

当你的视图控制器被初始化时,视图还没有被加载。(这发生在您的viewDidLoad:方法被调用之前。)保存字符串是有效的,因为您没有尝试将其直接放入answerField,但是对于图像,您尝试logoField过早更新。

如果文本有效,则您必须在某处分配answerStringanswerField.

于 2012-08-20T18:23:29.297 回答
0

您已发布“inImage” - 在您使用之前,请删除代码“[inImage release];” 从所有功能中,使用该图像后释放它

所以新代码是..以下

   -(id)initWithImage:(UIImage *)inImage AndAnswerString:(NSString *)inAnswerString
{
if (self = [super init])
{
    //[inImage release];
    [self setImage:inImage];
    [self setAnswerString:inAnswerString];

}
return self;
} 
-(void)setImage:(UIImage *)inImage
{
[logoField setImage:inImage]; 
[inImage release];
}
于 2012-08-20T18:30:00.163 回答
0

好的..我认为您必须将其作为 id 传递,而不是 UIImage 女巫不起作用:在您的 secondUIViewController.h 中:

@property (nonatomic, strong) id image;

在 secondViewController.m

@synthesize image = _image;
于 2012-09-19T19:12:15.337 回答