iOS UIImageView在iPad上无法显示任何内容

时间:2014-04-20 08:21:49

标签: ios iphone objective-c ipad uiimageview

我有一个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会相互叠加。

有人能帮帮我吗?谢谢! : - )

2 个答案:

答案 0 :(得分:1)

基础知识:

    仅当控制器加载到内存中时才会调用
  • viewDidLoad。因此,在您的SplitViewController中,启动应用后会立即调用viewDidLoad方法。

我的建议:

从InterfaceBuilder添加UIImageView并使用IBOutlet将其连接到您的控制器。这是达到目标的最简单方法。我假设您正在使用故事板?!

右键单击将插座拖到标题中: right click drag the outlet to your header

输入您的媒体资源的名称,然后点击“连接” enter image description here

通过这种方式,您可以在您的实施中访问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"];
}