【问题标题】:Very very weird problem with UIImageView property - I can access it then I can't, and it's not nilUIImageView 属性非常奇怪的问题 - 我可以访问它然后我不能,而且它不是 nil
【发布时间】:2010-05-29 10:51:14
【问题描述】:

iPad 应用程序上的 UIImageView 属性非常奇怪的问题

@interface MyViewController : UIViewController {
    IBOutlet UIImageView* coverImage;
}
@property(nonatomic, retain) IBOutlet UIImageView* coverImage;

…更多代码

@implementation MyViewController

@synthesize coverImage;

…更多代码

- (void)viewDidLoad {
    [super viewDidLoad];

    NSString* imageName = @"my_image.png";
    UIImage* tempImage = [UIImage imageNamed:imageName];
    [self.coverImage setImage:tempImage];
}

上面的代码将显示图像。

在另一部分代码中:

-(IBAction) stopButtonPressed:(id)sender {
    [self.coverImage setHidden:YES];
    NSLog(@"coverImage desc: %@", [coverImage description]);
}

图像不会消失。我知道对图像的引用不是零,因为它给了我这个输出:

2010-05-29 17:37:40.706 MyApp[95360:207] coverImage desc: UIImageView: 0x5128420;帧 = (0 0; 1024 768);自动调整大小 = RM+BM;用户交互启用 = 否;层=CALayer:0x512bed0

此外,如果我将 viewDidLoad 中的代码移动到类的另一部分,并尝试从那里执行它,它根本无法显示图像。

【问题讨论】:

  • 可能是一个愚蠢的建议,但每当视图中似乎没有发生某些事情时,我总是尝试调用 [view setNeedsDisplay:YES]...
  • 感谢您的建议,但这仍然不起作用。奇怪的是,当我尝试将图像设置为新图像或在类中的任何位置设置它的隐藏属性时,它会失败。它仅适用于 viewdidLoad。
  • 你能让包含视图重绘吗?如果你改变它的颜色(或者一些适合任何视图的改变),这对图像视图有什么影响?
  • 好吧,现在可以了。更糟糕的是,我不知道为什么。我再次尝试了 setNeedsDisplay,然后一切都开始正常工作。即使在我注释掉 setNeedDisplay 之后,它仍然有效。去图吧。
  • 嘿。我知道这会有点烦人,但只要它继续工作,抱怨就是无礼的!

标签: iphone ipad


【解决方案1】:

尝试仅将 self.coverImage 替换为 coverImage
self.coverImage 将调用与 coverImage 不同的设置器。

希望这会有所帮助并解决问题,
jrtc27

【讨论】:

  • self.coverImage 基本上就是getCoverImage,没有区别。为了清楚起见,我只是把它放在我的代码中。但是为了确保我没有遗漏任何东西,我还是尝试了它,但它仍然没有用。谢谢
【解决方案2】:

您的 ViewController 是否有可能被释放?

【讨论】:

  • 否 VC 继续在应用程序中正常运行。还有其他事情发生,但与图像无关。我做了如上所示的 NSLog,它不是 nil,所以我相当肯定图像和 VC 没有发布。
  • 请记住,仅仅因为它们不是 nil 并不一定意味着它们没有被释放。我现在正在尝试重现您的问题。如果我有运气会回来的。
  • 见我上面的评论。感谢您的帮助。
猜你喜欢
  • 2011-06-23
  • 2022-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-28
  • 2013-12-13
  • 2021-08-26
  • 2021-12-11
相关资源
最近更新 更多