Есть ли причина, по которой я не могу передать значение null в качестве заголовка конструктору UIActionSheet в MonoTouch? - PullRequest
3 голосов
/ 26 января 2012

Я пытаюсь создать лист действий для подтверждения удаления, например, как в OmniGraffle, GarageBand и некоторых других приложениях.Мне нужен лист действий без заголовка и одной большой красной кнопки удаления.

При чтении документации для конструктора UIActionSheet он говорит:

title

Строка для отображения в области заголовка листа действий.Введите nil, если вы не хотите отображать текст в области заголовка.

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIActionSheet_Class/Reference/Reference.html

Однако, если я сделаю это в MonoTouch:

UIActionSheet actionSheet = new UIActionSheet(
    null, 
    null,
    null,
    "Delete"
);

Я получаю NullArgumentException.То же самое, если я пытаюсь обойти, передавая фиктивную строку, а затем сделать actionSheet.Title = null;.Передача string.Empty работает нормально, но дает мне дополнительное пространство над кнопкой, которую я не хочу.

Итак:

  1. Есть ли причина для такого поведения, или это простоошибка MonoTouch?
  2. Есть ли обходной путь, который я могу использовать, чтобы получить желаемый вид?

enter image description here

Это (с большой красной кнопкой удаления) можноНе слишком сложно в MonoTouch!

Но я застрял с этим:

enter image description here

Видите дополнительное место сверху?Что мне делать?

Ответы [ 3 ]

3 голосов
/ 26 января 2012

Большое спасибо за заполнение отчета об ошибке.Это было исправлено в будущих версиях MonoTouch.

До этого момента вы сможете заменить это:

UIActionSheet actionSheet = new UIActionSheet(
    null, 
    null,
    null,
    "Delete"
);

на

 UIActionSheet actionSheet = new UIActionSheet ();
 actionSheet.DestructiveButtonIndex = actionSheet.AddButton ("Delete");

Дайте мне знать, если этоне охватывает вариант использования, который вы имели в виду, и я постараюсь найти другой обходной путь.

2 голосов
/ 26 января 2012

Согласно документации Apple, пропуск nil для названия совершенно действителен .

Это звучит как ошибка в привязке MonoTouch инициализатора UIActionSheet. Я искал Xamarin Bugzilla , и это не похоже на известную проблему.

Я бы сообщил об ошибке, и ссылка на этот вопрос должна быть легко исправлена. Возможно, вам даже удастся обойти вас; -)

0 голосов
/ 26 января 2012

Да, есть. Нуль не является частью цели. Вам нужно использовать ноль. Посмотрите внимательно на документацию, которую вы разместили.

Разница между ними заключается в том, что null не является объектом и происходит от c, в то время как nil является объектом и является частью надмножества target-c.

...