我有一个scrollViewController,在viewDidLoad中,我添加了一个UIImageView:
- (void)viewDidLoad
{
[super viewDidLoad];
[self.scrollView addSubview:self.imageView];
}
然后我设置了我的图像:
- (void)setImage:(UIImage *)image
{
self.scrollView.zoomScale = 1.0;
self.imageView.image = image;
self.imageView.frame = CGRectMake(0,0,image.size.width,image.size.height);
self.scrollView.contentSize = self.image ? self.image.size : CGSizeZero;
}
在iPhone上,这样可以正常工作,但在iPad(SplitViewController Detail)上,它没有显示任何内容。 我认为问题在于iPhone ViewDidLoad在已经有图像设置的情况下被调用,在应用程序启动时在iPad上,细节始终在屏幕上。
我尝试将addSubview放到setImage中,但是当用户点击另一个项目时,两个imageViewControllers会相互叠加。
有人能帮帮我吗?谢谢! : - )
答案 0 :(得分:1)
基础知识:
viewDidLoad
。因此,在您的SplitViewController
中,启动应用后会立即调用viewDidLoad
方法。我的建议:
从InterfaceBuilder添加UIImageView
并使用IBOutlet
将其连接到您的控制器。这是达到目标的最简单方法。我假设您正在使用故事板?!
右键单击将插座拖到标题中:
输入您的媒体资源的名称,然后点击“连接”
通过这种方式,您可以在您的实施中访问UIImageView
,然后您就可以了。无需以编程方式添加。
有关更多信息,请查看本教程:http://klanguedoc.hubpages.com/hub/IOS-5-A-Beginners-Guide-to-Storyboard-Connection
答案 1 :(得分:0)
在添加第二个imageViewController之前,您应该删除第一个imageViewController
试试这个:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//_imageView variable is created by outlet, or you can do it by programmatically
_imageView.image = [UIImage imageNamed:@"1"];
}
- (void) setNewImage
{
[_imageView removeFromSuperview];
_imageView.image = [UIImage imageNamed:@"2"];
}