2012-01-26 5 views
3

私はOmniGraffle、GarageBand、および他のいくつかのアプリに表示されているような削除確認アクションシートを作成しようとしています。私はタイトルのないアクションシートと大きな赤い削除ボタンが1枚必要です。MonoTouchのUIActionSheetコンストラクタのタイトルとしてnullを渡すことができない理由はありますか?

UIActionSheetのコンストラクタのドキュメントを読んで、それは言う:

タイトル

アクションシートのタイトル領域に表示する文字列。タイトルエリアにテキストを表示したくない場合は、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

バグレポートを記入してくれてありがとう。これはMonoTouchの将来のリリースで修正されました。

それまでは、あなたがこの置き換えることができる必要があります:

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

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

では、これはあなたが考えていたユースケースをカバーしていない場合、私に教えてください、私はしようとするでしょう別の回避策を見つける。

+0

これは完璧です!私はバグの回避策と迅速な修正を感謝します。 –

0

はい、あります。ヌルは目的の一部ではありません。 Nilを使用する必要があります。あなたが投稿したドキュメントをよく見てください。

これらの違いは、nullはオブジェクトではなく、cから来ているのに対して、nilはオブジェクトであり、objective-cスーパーセットの一部です。

+0

MonoTouchでこれをやっていますが、 'null'は' nil'の類推です。 –

+0

ああ申し訳ありませんが、その部分を逃した。急いで私... – nadavhart

2

Appleのドキュメントによると、タイトルにnilを渡すと、完全にvalidになります。

これは、UIActionSheet指定のイニシャライザのMonoTouchバインディングのバグのようです。 Xamarin Bugzillaを検索しましたが、これは既知の問題ではありません。

私はバグを報告し、この質問へのリンクは簡単に修正する必要があります。彼らはあなたに回避策を提供することさえできるかもしれません;-)

+1

ありがとう。バグレポートはこちらhttp://bugzilla.xamarin.com/show_bug.cgi?id=3081 –

関連する問題