关闭 SecondViewController 时,firstViewController 中的 UIButton 无法正确更改图像

Posted

技术标签:

【中文标题】关闭 SecondViewController 时,firstViewController 中的 UIButton 无法正确更改图像【英文标题】:UIButton in firstViewController does not change image properly when closing SecondViewController 【发布时间】:2012-11-16 10:39:20 【问题描述】:

我正在从 SecondView 控制器中保存图像并调整它的大小。 然后当我回到 Firstview 控制器时,这个控制器上的按钮图像必须 从刚刚保存的图像文件中加载。

图像部分显示(仅图像的顶部)。但是如果我再次进入 SecondViewController 并且不再保存图像并返回到 First ViewController ,则 Button 图像完全出现并且看起来不错。

- (void)showImageFirst  

    //Show thumb image in button.

    NSArray *sysPaths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES );
    NSString *docDirectory = [sysPaths objectAtIndex:0];
    NSString *filePath = [NSString stringWithFormat:@"%@/thumbtest.png", docDirectory];
    UIImage *tempimage = [[UIImage alloc] initWithContentsOfFile:filePath];

    [imageForButton setImage:tempimage forState:UIControlStateNormal];

我在 ViewDiDLoad 中调用它,我也尝试将它放在 ViewDidAppear 中:

-(void)viewWillAppear 
    [self.showImageFirst];
    [super viewWillAppear:animated];

【问题讨论】:

【参考方案1】:

您可以让第一个视图控制器成为第二个视图控制器的委托。

然后,无需将图像保存到磁盘,然后从磁盘加载回它,只需将 UIImage 从第二个视图控制器传递回第一个视图控制器。

我还没有检查,但我几乎可以肯定,将图像保存到磁盘是异步运行的,因此当您尝试再次加载图像时,可能没有保存图像。

【讨论】:

非常感谢!好主意!我在 1 中执行了 2 个操作(在查看 segued 时保存和委托)并且 id 不起作用! ) 现在好了! )) 很好 :) 喜欢它,因为你可以优雅地工作并且可以用更少的代码做更多的事情。

以上是关于关闭 SecondViewController 时,firstViewController 中的 UIButton 无法正确更改图像的主要内容,如果未能解决你的问题,请参考以下文章

Swift:弹出框关闭回调

运行时在 segue 中添加数据将无法识别 SecondViewController 类

FirstViewController 在删除 SecondViewController 的子视图时不起作用

迅速。 ViewController 之间的转换而不在返回时关闭它们

我可以将 SecondViewController 上的图像传递给 FirstViewController 吗?

iPhone:从按钮导航