2013-07-30 63 views
4

我正在做一個計算的應用程序。newbie ios - MVC中的模型在哪裏?

我有一堆視圖和視圖控制器。

用戶點擊按鈕打開和關閉屏幕觸發動畫的區域。其他人編輯時某些文本字段被禁用。當你點擊計算一堆數學完成後,結果就會動畫到屏幕上。

  1. 觀點..是所有的東西,我們與廈門國際銀行文件或情節串連圖板做
  2. 控制器..我們與我們做iOS應用程序啓動視圖控制器..我們引用出口和動作

3 .. 該模型是???即時假設我執行的數學應該去模型..任何計算的東西,不直接影響視圖。但地獄是模型?!我只是創建一個通用對象並在控制器中實例化它?在所有教程中,我只看到人們使用視圖控制器和相關的視圖。

回答

7

該模型是不是一件標配像你提到剩下的事情。當在Xcode中構建一個單一視圖應用程序時,它帶有一個viewController和一個appDelegate。正如你注意到的,該模型缺失。

那是因爲你建立你自己的模型。模型通常是您在視圖控制器中實例化的對象,然後通過其方法處理數據。該模型將是您創建的.h.m文件,用於創建一個通過其方法操縱用戶輸入中的數據的對象。

因爲讓您的視圖直接與您的模型對話並不是一個好習慣,反之亦然,您的viewController充當聯絡員。視圖(按鈕,標籤)包含viewController可以訪問的屏幕數據。一旦viewController有權訪問這些數據,它將數據發送到模型。如前所述,模型可以是您在viewController中實例化的對象。它會對你的應用程序進行思考並操縱viewController發送它的數據。

實例化模型的好地方是在viewDidLoad方法中。這可以確保當你的應用程序準備就緒時,你的模型也會如此。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.myModel = [[Model alloc] init]; 
} 

而作爲一個實例變量的參考模型應放在你的私人類擴展你viewController.m文件的頂部。

@interface ViewController() 
@property (nonatomic) Model *myModel; 
@end 
+0

在這個我不會一定能夠訪問我的模型的方法,因爲它只是在viewdidload方法中實例化..正確嗎?我應該將我的模型設置爲屬性,以便我可以在任何地方訪問它。或者我應該在任何需要使用它的方法中實例化它? – hamobi

+0

絕對。你在你的viewController中創建一個屬性,然後在你的應用程序準備就緒的時候實例化它 '@property(nonatomic)Model * myModel' –

+0

@hamobi 在你的程序中,你可以簡單地通過消息發送數據給你的模型,因爲它是一個屬性。 '[模型addNumber:self.label1.text andAnotherNumber:self.label2.text];' –

3

一如既往的設計取決於你。我建議用你所需要的任何模型對象創建一個核心數據模型(這將爲你生成類文件)。儘早熟悉iOS學習中的核心數據是獲取最佳實踐的好方法。

This應該讓你開始。這樣做也可以讓您輕鬆堅持程序狀態,易於維護和擴展。

祝你好運,你的iOS開發。

+1

核心數據這是一個很好的學習的框架,但我不認爲你會不會堅持什麼 –

+0

我不是什麼堅持它應該被用來..請問這是什麼人指的是,當他們談論的模型ios開發?特別是coredata? – hamobi

+1

正如我所說的,你的模型完全取決於你,核心數據是一個很好的框架。如果你永遠不會把它擴大到堅持的任何數據,你可以創建一個類的操作,爲您的計算器可以在類中的方法 +(NSInteger的)ADDA執行各功能的方法:(NSInteger的)一個巴爾王座:(NSInteger的)B; –

0

你的數學實際上在你的視圖控制器中。除非你想爲其他各種方法重用相同的功能。

你的模型可以是任何你想存儲到核心數據或其他持久存儲的任何東西。

基本上視圖談話的UI,模型的數據庫,以及其他一切與控制器

+1

我不同意。 MVC的「模型」不限於核心數據模型。詳細說明:視圖是用戶界面。控制器管理UI。其他所有東西都應該從控制器中提取出來並放置在其他物體上。這些其他對象的集合統稱爲模型。 –

2

是的,你應該創建一個NSObject子類,並把它的計算。
是的,你的控制器應然後創建模型對象,並用它來協調視圖。

術語「模式」僅僅指的是你獨立使用的UI類的集合。設計不佳的應用程序可能根本沒有模型。一個精心設計的應用程序將通過提供合適的模型來保持其控制器不受業務邏輯的干擾。

一個粗略的指南,讓您的產品型號從一切劃定是你的模型應該永遠#import <UIKit/UIKit.h>

相關問題