2013-02-06 23 views
2

好的,這個問題有些修辭。 :-)我知道答案是「因爲他們設計它的方式」,但仍然...爲什麼有很多方法將視圖與UIKit中的事件掛鉤?

我正在學習iOS開發,並發現自己陷入了所有各種方式來使一個部件(aka View/UIView)迴應一個事件。到目前爲止,我發現:

  • IBAction爲
  • IBOutlet中
  • 代表
  • addTarget:動作:forControlEvents:
  • 姿勢識別
  • 通知

(...更不用說界面生成器支持這些技術中的一些,但不是全部,甚至是它支持的那些並不總是能夠工作,或者在神奇地出現之前需要一些自定義編碼)。

  1. 是否還有其他我錯過了?

  2. 是否有任何理性的,先驗方式來告訴什麼技術用於特定的小部件?

  3. 是否有這些部件支持,任何情況下,集中式列表?還是必須通過文檔,示例代碼和猜測的組合來學習?

+0

「沒有建設性?」真?那些關閉它的人是否真的閱讀了完整的問題?我的3分如何不是「基於你所面臨的實際問題的實際的,可回答的問題」? – AlexChaffee

回答

2

該列表中的每一件事都有不同的目的,只是瞭解iOS開發和研究會讓你熟悉它們。例如,一個IBAut正通過Interface Builder連接到一個事件,而一個IBOutlet正在連接到Interface Builder中的UI元素。你的問題的完整答案是一個很長的教程。

+0

感謝您的回覆。我希望能得到比教程更少的東西,更像是一張備忘單。例如,在研究我自己的問題,我剛發現'addTarget:動作:forControlEvents:'上'UIControl',這意味着它的按鈕和滑塊,但沒有表或工具欄定義。如果有一個註解版本的[UIKit類層次結構](http://developer.apple.com/library/ios/documentation/uikit/reference/UIKit_Framework/Art/uikit_classes.jpg),它會顯示無數的事件連接。 – AlexChaffee

+1

是的,我明白,但從我的經驗,你列出了一堆事情,每一個都需要一些解釋,真的是一個本身的大話題。例如,委託不必與UI或視圖有任何關係,並且是Objective C中的核心設計模式。 – rooster117

0

在這個答案。當我發現他們時,我會刺探列出一些規則。 (也許我會使其成爲社區的wiki)

  • Communicating With Objects指南涵蓋網點,委託,數據源,IBActions(又名「目標 - 動作機制」),並通知(NSNotificationCenter等。
  • 顯然,每個控制決定哪些用戶事件,當您按住Control鍵拖動一個IBAction到它(通常潤色內部)勾搭上了,但如果你打開連接檢查,可以從事件的長列表中選擇和掛鉤的任何他們到您的IBAction方法。
  • addTarget:action:forControlEvents:被限定在UIControl,這意味着它是按鈕和滑塊但不表或工具欄。