2011-01-09 66 views
1

我在將子視圖中的控件映射回擁有控制器上的字段時遇到問題。具體來說,我已將每個「控件」的出口映射到文件所有者。 Monotouch然後爲控制器的xib designer.cs文件生成代碼,以將這些控件作爲控制器類的屬性引用。但是,當我運行我的代碼時;嘗試在控件上設置屬性時,我得到對象爲null錯誤。用調試器深入研究這個問題;它看起來GetNativeField在試圖從xib文件中通過它們的名稱訪問插座時返回null。iPhone,Monotouch和XIB插座問題

任何人有任何想法,爲什麼會發生這種情況?我檢查了.xib文件和生成的代碼; Outlet,Property和Field名稱相互一致。

任何建設性的意見,非常感謝。

感謝, 弗蘭克

回答

0

我想清楚是什麼導致了這個問題;這是我是如何推棧上的控制器:

using(var batteryController = new BatteryController()){ 

    navigationController.PushViewController(batteryController,true); 

} 

看來,當調用Dispose控制器上,筆尖資源從內存中刪除;這是造成這個問題。

但是,這引出了另一個問題。一旦它被推入堆棧,你是不是應該在新的控制器上調用dispose?在目標C中,當你在棧上推控制器時,你應該在事後調用釋放。那麼我做錯了什麼呢?

+1

以及對MonoTouch的有一個垃圾收集器上的文件提到它會自動釋放非引用的資源在應用程序 - >單聲道帶有一個垃圾收集器,它允許開發人員專注於他們的軟件,讓運行時間照顧需要發佈物品的簿記。這可以避免常見的內存泄漏,並減少需要編寫的代碼量以避免這些泄漏。資料來源:http://monotouch.net/index.php?title=Features&highlight=垃圾收集器 – dalexsoto 2011-01-19 16:25:35

-1

你應該添加網點的AppDelegate中喜歡上了這PIC http://yfrog.com/f/h7faip/試試這個也是我的博客上了一個簡單的計算器的視頻,它在西班牙,但如果你看它的非常自我解釋你可以在這裏看它http://alexsoto.me/calculadora-monotouch它應該幫助你開始:)希望這有助於祝你好運,如果我可以幫助你的任何其他只是讓我知道

編輯:也可以檢查這個視頻這一個使用子視圖也應該幫助你,這一個它的英文版http://www.alexyork.net/blog/post/Selecting-a-contact-from-the-Address-Book-with-MonoTouch.aspx

0

注意,鑑於已加載和LoadView()或通過訪問UIViewController的「查看」屬性出現這種情況後,網點將只訪問(這將加載隱含的觀點)。 只有這樣IB內容才能被構建並可供使用。

所以如果你想改變東西,你可以手動調用LoadView(),或在視圖中覆蓋它,請致電base.LoadView(),然後訪問網點。