我有一个要添加到 UINavigationBar 的简单按钮,Min OS 是 3.2,我们使用默认编译器进行编译。我有 MT 5.0:
saleImg = UIImage.FromFileUncached (shoppingImg);
saleButton = new UIBarButtonItem ("", UIBarButtonItemStyle.Bordered, (s, o) => {ItunesHelper.Open (); });
saleButton.SetBackgroundImage(saleImg,UIControlState.Normal,UIBarMetrics.Default);
saleButton.SetBackgroundImage(saleImg,UIControlState.Selected, UIBarMetrics.Default);
saleButton.SetBackgroundImage(saleImg,UIControlState.Highlighted, UIBarMetrics.Default);
但是在运行时会抛出错误:
抛出 Objective-C 异常。名称:NSInvalidArgumentException 原因:-[UIBarButtonItem setBackgroundImage:forState:barMetrics:]: 无法识别的选择器发送到实例 0x76d4d00
最佳答案
UIBarButtonItem.SetBackgroundImage
方法是在 iOS 5 中引入的.由于您收到“无法识别的选择器...”消息,我只能假设您在 iOS 版本低于 5.0 的设备上运行该应用程序。
如果您希望您的应用向后兼容,请创建一个按钮并使用 UIBarButtonItem(UIView)
构造函数初始化 UIBarButtonItem
:
UIButton button = UIButton.FromType(UIButtonType.Custom);
button.SetBackgroundImage(saleImg, UIControlState.Normal);
button.TouchUpInside += (s, o) => {ItunesHelper.Open (); };
UIBarButtonItem saleButton = new UIBarButtonItem(button);
设置最低操作系统版本并不意味着 MonoDevelop 或编译器会通知您 API 兼容性。它只是 Info.plist 中的一个设置,它将决定您的应用程序是否会出现在该版本设备的 App Store 中。
关于ios - 单点触控 : Using SetBackgroundImage() throws Selector error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8206903/