在标准iPhone应用程序中,我在桌面视图顶部显示图像选择器。代码工作正常(我相信;-)),但是当将图像选择器委托设置为表视图控制器(ChoiceController)时,我收到编译器警告。
ChoiceController被定义为实现委托:
@interface ChoiceController : UITableViewController
<UIActionSheetDelegate,
UIImagePickerControllerDelegate,
MFMailComposeViewControllerDelegate>
并且显然确实成为了代表,因为它接受了所有适当的行动。
我已经尝试将ChoiceController(即self)转换为UIImagePickerControllerDelegate,但我得到的结果相同。
欢迎见解!
答案 0 :(得分:2)
您可以在警告文本中看到代理人必须是UIImagePickerControllerDelegate
,还有UINavigationControllerDelegate
。
它定义如下:
@property (nonatomic, assign) id<UINavigationControllerDelegate, UIImagePickerControllerDelegate> delegate
在您的情况下,它工作正常,因为所有UINavigationControllerDelegate
方法都是可选的。如果不是这样的话,该应用程序会因unknown selector send to instance
异常而崩溃。
您应该实施UINavigationControllerDelegate
协议。如果您不需要在那里声明的任何方法,并且它们确实是可选的,请不要实现它们。