MonoTouch:使用SetBackgroundImage()会引发Selector错误

时间:2011-11-21 03:22:22

标签: ios xamarin.ios

我有一个简单的按钮添加到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 exception thrown. Name: NSInvalidArgumentException Reason: -[UIBarButtonItem setBackgroundImage:forState:barMetrics:]: unrecognized selector sent to instance 0x76d4d00

1 个答案:

答案 0 :(得分:2)

UIBarButtonItem.SetBackgroundImage引入UIBarButtonItem方法。由于您收到“无法识别的选择器...”消息,我只能假设您在iOS版本低于5.0的设备上运行应用程序。

如果您希望自己的应用向后兼容,请创建一个按钮并使用UIBarButtonItem(UIView)构造函数初始化UIButton button = UIButton.FromType(UIButtonType.Custom); button.SetBackgroundImage(saleImg, UIControlState.Normal); button.TouchUpInside += (s, o) => {ItunesHelper.Open (); }; UIBarButtonItem saleButton = new UIBarButtonItem(button);

{{1}}

设置最低操作系统版本并不意味着MonoDevelop或编译器会通知您API兼容性。它只是Info.plist中的一个设置,它将确定您的应用程序是否将在App Store上显示该版本的设备。