2012-01-26 23 views
3

我試圖做一個刪除確認操作表,就像你在OmniGraffle,GarageBand和其他幾個應用程序中看到的一樣。我想要一個沒有標題和一個大紅色刪除按鈕的操作表。是否有我不能將null作爲標題傳遞給MonoTouch中的UIActionSheet構造函數的原因?

在閱讀文檔UIActionSheet的構造,它說:

標題

在動作片的標題區域中顯示的字符串。如果您不想在標題區域顯示任何文字,則通過零。

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

這是完美的!我很欣賞這個bug的解決方法和快速修復。 –

0

是的,有。空不是Objective-C的一部分。 你需要使用零。仔細看看你發佈的文檔。

它們之間的區別在於null不是一個對象並且來自c,而nil是一個對象並且是objective-c超集的一部分。

+0

沒錯,但我在MonoTouch中做了這個,'null'是'nil'的類比。 –

+0

對不起,錯過了那部分。趕走我... – nadavhart

2

根據蘋果的文檔,通過零的標題是完美的valid

這聽起來像是UIActionSheet指定初始化程序的MonoTouch綁定中的一個錯誤。我搜查了Xamarin Bugzilla,這似乎不是一個已知問題。

我會提交一個錯誤,並鏈接到這個問題,應該是一個簡單的修復。他們甚至可以爲您提供解決方法;-)

+1

謝謝。錯誤報告在這裏:http://bugzilla.xamarin.com/show_bug.cgi?id=3081 –

相關問題