我正在尝试制作删除确认操作表,就像您在OmniGraffle,GarageBand和其他几个应用中看到的那样。我想要一个没有标题的动作表和一个大的红色删除按钮。
在阅读UIActionSheet构造函数的文档时,它说:
标题
要在操作表的标题区域中显示的字符串。如果您不想在标题区域中显示任何文本,请传递nil。
但是,如果我在MonoTouch中执行此操作:
UIActionSheet actionSheet = new UIActionSheet(
null,
null,
null,
"Delete"
);
我得到NullArgumentException
。如果我尝试通过传入一个虚拟字符串然后执行actionSheet.Title = null;
来解决此问题。传入string.Empty
工作正常,但在我不想要的按钮上面给了我额外的空间。
所以:
这个(带有一个大的红色删除按钮)在MonoTouch中不会太难!
但我坚持这个:
查看顶部的额外空间?我该怎么办?
答案 0 :(得分:3)
非常感谢填写错误报告。对于未来的MonoTouch版本,已经修复了这个问题。
在那之前你应该能够取代它:
UIActionSheet actionSheet = new UIActionSheet(
null,
null,
null,
"Delete"
);
与
UIActionSheet actionSheet = new UIActionSheet ();
actionSheet.DestructiveButtonIndex = actionSheet.AddButton ("Delete");
如果这不包括您考虑的用例,请告诉我,我会尝试找到另一种解决方法。
答案 1 :(得分:2)
根据Apple文档的说法,为标题传递nil非常完美valid。
这听起来像是UIActionSheet指定初始化程序的MonoTouch绑定中的错误。我搜索了Xamarin Bugzilla,这似乎不是一个已知的问题。
我会提交一个错误,并链接到这个问题,应该是一个简单的解决方案。他们甚至可以为您提供解决方法; - )
答案 2 :(得分:0)
是的,有。 Null不是objective-c的一部分。 你需要使用Nil。仔细查看您发布的文档。
它们之间的区别在于null不是一个对象而是来自c,而nil是一个对象,是objective-c超集的一部分。