2013-05-14 60 views
2

我在視圖控制器中有一個UIButton,它不是我應用程序中的根視圖控制器。我無法在頭文件中拖動併爲其創建出口或動作。我只能從根視圖控制器執行它。爲視圖控制器設置插座/動作

這是否有一個簡單的理由?

回答

4

當使用故事板,只的XCode創建h和.m文件第一個視圖控制器(命名爲ViewController.h和ViewController.m)。

對於通過Interface Builder添加的每個附加視圖控制器,您應手動添加其他自定義類文件以自定義視圖控制器。

一旦你添加一個視圖控制器通過Interface Builder中你的故事板,按照下列指示:

  1. 從主的XCode菜單中選擇文件,新建,文件,然後選擇 Objective-C類並點擊下一個。命名自定義類,然後選擇 您添加的視圖控制器的正確類型(即 爲表視圖控制器選擇UITableViewController)。
  2. 從XCode的界面構建器中選擇新的視圖控制器,然後從Identity Inspector選項卡中將類設置爲您剛創建的新類。

然後,您應該能夠按住CTRL鍵單擊拖動任何UIButtons或其他UI元素到新的.h或.m文件和實施的觀點有任何自定義行爲。

如果您沒有創建文件來實現您的自定義類,那麼您將被默認的UI類阻止,如UIViewController,它們只有默認行爲,除非您使用自定義類來擴展它們。

您通常需要每個視圖控制器一個.m和.h文件。

+0

完美。謝謝你的回答正是我需要知道的。 – stevenpepe 2013-05-14 17:14:51

0

你想拖動到該viewController的頭文件?我猜你正在使用故事板而不是xibs?我認爲我們需要更多的細節。截圖可能?

聽起來像你的助手是錯誤的觀點。您可以在助理視圖左上角的下拉列表中將其更改爲該視圖控制器的匹配頭文件。但就像我說的,我們需要更多細節。

0

您可以將UIButton連接到定義爲視圖控制器一部分的插座。

如果你還使該插座成爲一個屬性,那麼你可以公開並使該按鈕可供其他視圖控制器設置/獲取/查詢/等。後者只在內存中存在按鈕託管視圖控制器的情況下才起作用(至少在初始階段,它不會假設視圖控制器中的按鈕可見,並不會在第一個控制器可見的同時出現) 。

0

是的,有一個簡單的原因,雖然很難說你的案例究竟是什麼原因,因爲你沒有提供足夠的信息。基本上,這一切都歸結於視圖控制器的工作方式以及它們如何從故事板加載/實例化。簡短的版本:

  • 您可以只相同的「場景」中的對象之間的出口/動作。

  • 插座/操作很複雜:如果代碼中有相應的IBOutlet/IBAction,則只能創建一個。 Xcode可以幫助創建它作爲插座/動作創建過程的一部分,但這僅僅掩蓋了兩件事情:代碼中的IBOutlet/IBAction以及筆尖/故事板中的插座/動作。

你可能會通過閱讀我的書對筆尖到底是如何工作本章進一步幫助:

http://www.apeth.com/iOSBook/ch07.html#_nib_loading_and_file_8217_s_owner

這同樣適用於故事板,有效地只是一個多筆尖組合成的方式單個文件。故事板添加一些併發症,不過,因爲有另一種事情,你可以將對象之間拖動,即關係賽格瑞(它可能是你不小心創建者之一):

http://www.apeth.com/iOSBook/ch19.html#_storyboards

0

確保NIB的文件的所有者設置爲正確的類。從Interface Builder中選擇文件的所有者並確保正確的類在身份檢查選項卡中設置:

enter image description here

相關問題