我承认我是Objective-C的新手,但我觉得相当远。现在我遇到了问题,需要一些帮助。
在我的应用程序中,我以纵向模式显示图像以及其他信息,并希望以横向模式全屏显示。我了解到你要定义一个Landscape m,h和nib文件并在设备移动到横向时加载此视图(与观察者一起工作),对吗?
在纵向模式下,最终的图像取决于用户交互,因此需要告知Landscape类,要显示哪个图像。我在Landscape类
中创建了一个putImage方法-(void) putImage:(NSString *)theImage {
pict.image = [UIImage imageNamed: theImage];
NSLog(@"PICT %@",pict.image);
NSLog(@"IMAGE %@",theImage);
}
并从肖像中调用它,问题就出现了:
NSString *actualImage = [NSString stringWithFormat:@"Picture%i.jpg",selected];
pict.image = [UIImage imageNamed: actualImage];
[landscapeViewController putImage:actualImage];
每次除了第一个之外都很有效。所以无论我做什么,我都需要首先让App加载一个新图像,并以任何方式改变横向(不显示图像)。然后它始终显示正确的图像。
我添加了调试信息,看到正确的图像被分配给横向类中的pict - 但是它似乎需要在真正设置图像之前显示。
你们可以给予任何帮助吗?
答案 0 :(得分:0)
不确定是否这样,因为您的示例代码非常稀疏。但是当你加载第一张图片时,你是否在init中执行此操作?如果是这样,请尝试在viewWillAppear或viewDidAppear中执行此操作。
答案 1 :(得分:0)
感谢您提供所有提示并尝试提供帮助。现在我自己找到了解决方案......这就是我所做的:
1)在LandscapeViewController.h中我定义了一个NSString:
@interface LandscapeViewController : UIViewController
{
IBOutlet UIImageView *pict;
NSString *actualImage;
}
2)我改变了putImage方法,只将图像名称分配给我的本地NSSTRING变量:
-(void) putImage:(NSString *)theImage {
actualImage = theImage;
[actualImage retain];
}
3)加载图像我只在viewWillAppear中执行:
- (void)viewWillAppear:(BOOL)animated {
pict.image = [UIImage imageNamed: actualImage];
[super viewWillAppear:animated];
}
所以我的问题的答案几乎已经回答了 - 我猜这个问题的出现是因为我在第一次加载视图之前设置了图像,因此没有实例化。我能够调用该方法,但没有设置Image Object ...这对你们来说听起来合乎逻辑吗?
再次感谢大家!