2010-05-25 47 views
2

我是一個C#程序員,在使用MonoTouch的iPhone開發中進行了一些討論。MonoTouch如何自動生成XIB代碼?

我添加了一個新的視圖接口定義到我的項目,雙擊在Interface Builder中打開它。我添加一個UIButton。我保存該文件,然後檢查xib.designer.cs文件,並且我看不到新按鈕的引用。

我下載的代碼http://monotouchexamples.com/在那裏我可以看到背後自動生成代碼的例子:

[MonoTouch.Foundation.Connect("infoButton")] 
private MonoTouch.UIKit.UIButton infoButton { 
get { 
return ((MonoTouch.UIKit.UIButton)(this.GetNativeField("infoButton"))); 
} 
set { 
this.SetNativeField("infoButton", value); 
} 
} 

我在界面生成器打開的MainWindow.xib。我注意到一些差異。文件的所有者是類型UIApplication而不是NSObject。這有什麼重要的?有一個AppDelegate類型的App Delegate對象。我無法將AppDelegate添加到我自己的視圖中,或者至少我無法在庫中找到它。我需要添加一個嗎?我可以看到MainWindow.xib上的現有控件具有引用到應用程序委託的出口。我添加了一個新按鈕,我想將它連接起來。當我單擊並拖動一個新的引用出口到App Delegate時,會出現一個上下文菜單,列出現有的控件。如何向此列表添加新元素,或者此列表來自哪裏?

我已經被Visual Studio世界寵壞了,我只是在表單上轉儲一個按鈕並開始編寫單擊事件的代碼。有人能提供一些關於在MonoTouch上運行所需步驟的指針嗎?

感謝,

帕特里克

回答

1

自行添加一個按鈕是不夠的。無法在Interface Builder外部訪問該按鈕。您需要添加一個Outlet,並將該按鈕連接到Interface Builder中的插座。

記住:Outlet是Controller類中的成員,它可以獲取對控件的引用,不能只在沒有它們的情況下訪問控件。

+0

感謝您的回覆。在哪裏以及如何添加插座?這是我在代碼中必須做的事嗎?你能否突出顯示這個項目中增加了網點的位置:http://github.com/chrisntr/Monotouch-Examples/tree/master/MonotouchExamples/? – 2010-05-26 11:39:54

+0

插座是在Interface Builder中創建的,其中完全取決於您正在運行的Mac OS X的版本。我建議你看一下Monotouch的教程。 – 2010-05-26 20:32:07

0

聽起來像我創建的項目已過時 - 我記得圍繞設計器文件中如何創建生成的按鈕進行了不少更改。我會盡快爲您更新該項目。

正如Dave所說,要讓代碼自動生成,您需要在Interface Builder中添加一個插座。這裏的視頻應該有一個例子 - http://bit.ly/aWoItN,但服務器目前似乎處於關閉狀態。

希望這有助於

ChrisNTR

1

戴維說,你需要一個出口添加到您的控制器類,和你的按鈕連接到插座,在任何自動生成的代碼將出現。最初,這也讓我感到不安。

您可以在界面生成器庫窗口中選擇您的控制器類,在庫的底部選擇'出口',然後在其中添加一個出口。然後您需要選擇您的按鈕,選擇檢查器窗口的連接選項卡,然後從「新參考插座」圓圈拖到控制器類。然後界面生成器會提示你選擇一個插座來連接。然後,當您保存時,您應該將自動生成的代碼顯示在.xib.designer.cs文件中,然後您應該能夠通過.xib.cs文件中的該出口變量引用您的按鈕。