The biggest problem I see is this line:
self.view = backView;
You are attempting to replace your view controller's view property with a UIImageView - this is not okay. The view controller's view property should not be manipulated in this way. You should add subviews to it, not replace it entirely. Your application is attempting to invoke a method (setEnableSetNeedsDisplay:) on (what I assume to be) the view controller's view. Since you have replaced this with an instance of UIImageView, you're getting an exception as UIImageView does not implement this method.
Instead, do something like this:
[self.view addSubview:backView];
Note that you can also add any other subviews to the view in this way, so your button need not be a subview of the image, but it can be a direct subview of the view controller's view.