2012-05-19 79 views
0

我是相當新的iOS開發。我通常在代碼中創建所有的UIViews,UILabels,UIButtons等,而不是使用Interface Builder。這使得我的UIViewControllers非常容易變得非常大並且難以遵循,將出口聲明與實際動作和邏輯混合在一起。iOS的代碼組織模式

- (UIButton *) continueButton { 
    // if button is nil 
    if(_continueButton == nil) { 
     UIButton *button  = [[UIButton buttonWithType:UIButtonTypeCustom] retain]; 

     /* more configuration */ 

     _continueButton = button; 
    } 
    return _continueButton; 
} 

// occures when continue button is tapped 
- (void) buttonTouch:(id) sender 
{ 
    UIButton *button = ((UIButton *)sender); 

    if(button == continueButton) { 
     /* do stuff */ 
    } 
} 

我要完成什麼是在不同的文件中分離出的實際行動,動畫,邏輯等等, 並存儲按鈕,標籤和其他若干意見的聲明。

作爲一個解決方案,我想創建一個與網點另一個的UIViewController和嵌入它當保持邏輯的主要一個內部的孩子,使用「addChildViewController」。

這是否是正確的方式去?你如何處理它?

+0

你想去公用事業一種控制器,它可以是重用? – rishi

+0

不是真的,我只是想知道從視圖中分離邏輯的最好方法是什麼。我來自網頁背景,其中有定義窗體和其他UI元素的模板以及處理它們的控制器。 – Hidden

+3

幫你一個忙,使用界面生成器,就是這樣。閱讀有關依賴注入的知識,瞭解爲什麼在代碼中執行這樣的操作是一個糟糕的主意。 – Sven

回答

2

我想你會對此錯誤的方式。在大多數情況下使用IB是明智之舉。 Xcode將更有效地創建用戶界面元素的代碼,然後你會。

此外,使用IB和助理編輯器將接線東西更快,更高效。它還確保在需要時添加清理代碼。

對於我的實現文件中的代碼分離,我個人使用#pragma mark -將我的Outlet聲明與我的Action聲明分開,然後始終將Actions的方法與其他方法分開(通常位於頂部)。

我私下聲明的屬性,除非奧特萊斯出於某種原因,他們需要公開。 我的結構:

  • 我在頂部
  • 操作方式旁邊
  • 我的委託方法
  • 蘋果的方法
+1

+1。最好的代碼行是你不必寫的。 –

+0

謝謝。我會再給IB一個鏡頭,儘管對我來說,在某些情況下似乎有點......有限。 – Hidden

+1

相信我 - 長遠來說,您會感謝我們。我在UI上的工作效率是我曾與拒絕使用IB的其他開發人員的2-3倍。憑藉經驗,您將看到如何克服感知的限制。當然,在某些情況下,IB不是答案 - 但在絕大多數情況下,您會發現它。 –