2012-10-19 57 views
1

我是obj-c/iOS的新手,我在概念上至少沒有理解viewController。我已經閱讀了很多Apple Doc,我甚至在xCode中使用過viewControllers,但我仍然不太明白它們是什麼,或者使用它們的最佳方式是什麼。麻煩了解iOS中的viewControllers問題

我已經做了很多年的AS3開發,所以我的思想在MovieClips/Sprites和Display列表的上下文中在屏幕上顯示圖形。

從我的理解好了,所以......

  1. 一個的viewController是一種類來處理圖形在一些 方式,然後讓你做他們的東西?它最基本的意義是什麼?
  2. 你似乎添加viewControllers到一個窗口類,我想有點像 添加一個顯示對象顯示列表?
  3. 什麼是viewController爲你做的最基本的意義?
  4. 是否有某些事情你肯定不能和他們做或不應該跟他們做 ?
  5. viewControllers是否需要以某種方式連接到iOS框架的其餘部分才能正常工作(除了被添加到窗口之外)。
  6. 他們究竟如何使用數據? (我已經閱讀了MVC,我理解這在概念上是一個稍微不同的問題),因爲據我所知,您不會將數據硬編碼到viewController中,那麼viewController如何訪問任何靜態數據?
  7. 比方說,我只是想在屏幕上投射一張圖片,viewController在這個過程中究竟扮演什麼角色?它只是處理那個過程的一個小方面,還是整個演出和處理所有事情?
  8. 一個viewController處理多個圖像嗎?它是否就像它的名詞,屏幕上顯示的所有圖像都是「控制器」,還是一次處理一張圖像?
  9. 什麼是viewControllers連接到它處理的圖像?它包含對它們的引用?

我使用的是麻雀的框架,幫助,但我仍希望能夠得到我的頭周圍viewControllers是所以我知道如何正確地使用它們。

哈,我爲上述我表示歉意我知道它必須看起來像我完全困惑:)感謝您的任何建議。

回答

3

希望這有助於你:

  1. 一個的viewController是一種類來處理圖形以某種方式,然後讓你做他們的東西?

    這是視圖(Xib文件)和數據(可能是 CoreData或任何你在後端使用的)之間的粘合劑。您在通常在 控制器中定義爲屬性的視圖中使用的所有UI元素 以訪問它們。

  2. 這是最基本的意義是什麼? 你似乎將viewControllers添加到一個Window類,我想這有點像添加一個顯示對象顯示列表?

    我不太瞭解AS3,因此我無法將顯示列表與ViewControllers進行比較。但基本上ViewControllers可以處理視圖之間的不同類型的轉換並訪問視圖中顯示的數據(設置/讀取) 。

  3. 什麼是viewController爲你做的最基本的意義?

    就像我上面寫的。最基本的意義是,他們解釋用戶 在視圖上所做的操作以及取決於用戶的操作會更改 模型。

  4. 是否有某些事情你絕對不能與他們做或不應該與他們做?

    保持模型和控制器之間的邊界總是很困難。 他們彼此很接近。所以我通常嘗試的是將 取代所有的邏輯資料(如計算,數據庫訪問等等),這樣做更多屬於模型部分。但是,你可以在控制器中使用這些外部類別 。

  5. viewControllers是否需要以某種方式連接到iOS框架的其餘部分才能正常工作(除了被添加到窗口之外)。

    好像你已經寫了ViewController需要連接到一個視圖 。否則它沒有多大意義。有不同的UIViewController的子類型,如UINavigationController ,其中您可能需要覆蓋其他一些方法來提供這些特殊子類型所需的整個功能 。

  6. 他們究竟如何使用數據? (我已經閱讀了MVC,我理解這在概念上是一個稍微不同的問題),因爲據我所知,您不會將數據硬編碼到viewController中,那麼viewController如何訪問任何靜態數據?

    可能有不同的方法來存儲數據。最簡單的方法 應該是將數據直接存儲在UIViewController中。 這可能是一個自定義類,它是數據的容器。所有 更改都直接寫入此類,並由 UIViewController顯示。但在大多數情況下,使用 CoreData(它負責將數據讀取/寫入到 sqlite數據庫)是有意義的。您可以將CoreData視爲您的模型,UIViewController從此處獲取數據,並將UIViewController從View收到的數據傳回給它。

  7. 比方說,我只是想在屏幕上向上拋出一個圖像,viewController在那個過程中會發揮什麼作用?它只是處理那個過程的一個小方面,還是整個演出和處理所有事情?

    的UIViewController的將存儲的內部屬性(UIImageView的*) 這與你 已在廈門國際銀行文件中創建的UIImageView連接界面生成器。因此,通過這些屬性,您可以通過控制器更改 圖像。

  8. 一個viewController能處理多個圖像嗎?它是否就像它的名詞,屏幕上顯示的所有圖像都是「控制器」,還是一次處理一張圖像?

    是的,這不是一個大問題。你可以擁有你想要的圖像。 你只需要在UIViewController 中定義的屬性並鏈接到視圖。

  9. 什麼是viewControllers連接到它處理的圖像?它包含對它們的引用?

    是的,它就像是對UIElement的引用。然後,您可以更改 無論UIImageView的財產,你直接從 的UIViewController

一些有用的鏈接想:

1

我建議你檢查: https://stackoverflow.com/questions/1939/how-to-articles-for-iphone-development-and-objective-c

以下是問題的答案:

  1. 沒有,它不處理圖形。它是MVC設計模式的控制器。它處理其內容的生命週期(例如視圖)以及與之鏈接的數據。
  2. A UIViewController設置爲UIWindow的根。例如,UINavigationControllerUIViewController的一個子類,其堆疊UIViewController以便處理導航。
  3. (1)
  4. 的回覆請嘗試對此問題進行更具體的描述。
  5. 正如已經評論的那樣,如果您使用已經內置的組件,例如UINavigationControllerUITabBarController,這將非常有用。
  6. 例如,您可以將實例變量中的數據顯示在包含的UIView中。
  7. 連接到您的UIViewControllerUIView將包含一個UIImageView。您的UIViewController會與它建立連接,以便進行所需的任何更改,例如,在用戶按下按鈕時更改圖像。
  8. 它可以包含多個UIViews,因此多個UIImageViews(它是UIView的子類)
  9. 作爲評論的,它們將被包含在一個UIImageView並且將被編程或用IBOutlet相連。
1

簡而言之,視圖控制器是MVC模式中的控制器。進一步閱讀使你瞭解最新的這種模式之前,請檢查此鏈接:

http://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html

OK,基本上是一個控制器管理的意見的集合。它還從您的模型中提取數據並設置視圖的狀態。需要注意的是,這些視圖對您的模型(您的數據)一無所知,並且該模型對您的視圖一無所知。控制器還接收來自視圖的事件並決定如何相應地更改模型。它本質上是管理你的視圖和模型之間的同步。

有些技術可以幫助自動執行此操作,例如KVO和鍵值綁定。谷歌搜索將幫助你。

還有一件事。除了控制器之外,您的應用程序的其他部分不能訪問您的視圖。因此,通常在應用程序中,控制器傾向於相互通信,例如通過轉換或導航控制器下的控制器之間的委託模式。所以你的應用程序骨幹往往是控制器互相交談。