错误:Void方法'undo:'不应返回值

时间:2014-04-24 15:23:01

标签: ios objective-c nsdocumentdirectory

我在这行代码中得到此错误(Void方法'undo:'不应返回值):

return image;

出了什么问题,有人知道这个错误的解决方案吗?

代码:

- (IBAction)undo:(id)sender
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                     NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString* path = [documentsDirectory stringByAppendingPathComponent:
                  @"test.png" ];
UIImage* image = [UIImage imageWithContentsOfFile:path];
[self->_imagView setImage:image];
return image;
}

修改

如果点击“撤消”按钮,我应该说什么?图像应该返回?

代码:

- (IBAction)undo:(id)sender

{

}

- (UIImage*)loadImage
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                     NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString* path = [documentsDirectory stringByAppendingPathComponent:
                  @"test.png" ];
UIImage* image = [UIImage imageWithContentsOfFile:path];
return image;
}

- (void)saveImage: (UIImage*)image
{
   if (image != nil)
   {
      NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                         NSUserDomainMask, YES);
      NSString *documentsDirectory = [paths objectAtIndex:0];
      NSString* path = [documentsDirectory stringByAppendingPathComponent:
                      @"test.png" ];
      NSData* data = UIImagePNGRepresentation(image);
      [data writeToFile:path atomically:YES];
   }
}

2 个答案:

答案 0 :(得分:3)

您无法从具有void返回类型的方法返回值。 IBAction实际上只是void

除了尝试返回之外,您还需要使用image执行其他操作。

答案 1 :(得分:1)

你为什么要退货?对谁?

只需执行必须执行的操作即可撤消。可能应该使用undo manager来完成。

自行进行撤消并不容易,而且只需重新加载原始(猜测:未处理)图像即可完成更多工作。