2012-01-03 19 views
6

我正在使用XCode 4和故事板創建一個應用程序,但是我無法直觀地修改UIToolbar。從xcode故事板中直觀地修改UIToolbar

我試圖修改UIToolView裏面的UITableViewController - 但是我必須將UIToolbar放在正確的層次結構以便能夠直觀地修改它。我試過把它放到視圖控制器區域,但沒有顯示出來。

有一次,我能夠讓它出現在下面,因爲它是自己的對象,但是我無法重新創建它。

Problem

一旦我能夠得到它看起來像這樣 Problem

回答

21

您的UITableViewController位於UINavigationController之內,該區域已擁有自己的UIToolbar - 您無需將新的視圖拖入視圖層次結構中。界面生成器可以在檢測器面板的「模擬指標」下爲您模擬工具欄。

一旦模擬的工具欄可見,只需拖動UIBarButtonItem即可。如果您需要比按鈕或間隔器更復雜的任何東西,請使用具有自定義視圖的自定義項目。

如果您需要您的工具欄項目需要動態,您可以通過IBOutlet s維護一個參考,而不必在您的視圖中顯示它們。然後設置您的UITableViewControllertoolbarItems屬性或在運行時調用-setToolbarItems:animated:以顯示相應的項目。

請參閱Apple的UINavigationController Class Reference: Displaying a Toolbar

+0

謝謝你是這個問題,我不能將項目拖到模擬工具欄上,但是這是因爲我在檢測到崩潰後保持了一個正在運行的xcode會話。只需將條形按鈕項目拖動到模擬工具欄即可獲得預期結果。 – 1dayitwillmake 2012-01-06 06:28:27

+0

雖然在同一時間,我想知道我是如何能夠讓該工具欄顯示在底部,因爲它是自己的實體兩次。 – 1dayitwillmake 2012-01-07 01:00:35

+1

哦,我也是;我不知道。 – 2012-01-08 18:45:00

1

UITableViewControllers只允許一個視圖對象,這當然是UITableView的。 UITableViews不適用於子視圖,它們通常將所有內容都推送到頁腳或頁眉。這樣的事情是不可能的:

-TableController 
    -Table 
     -Subview 
     -Another subview 

UITableViewControllers減少到這一點:

-TableViewController 
    -Table 

所以,你需要使用一個UIViewController,並在那裏宣佈一個UITableView。繼承人的層次,你應該使用則:

- ViewController <Table's Delegate & Data Source> 
    - View   
     -Table 
     - Your UIToolbar 

在你ViewController.h聲明IBOutlet中的UITableView和數據源和代表連接到ViewController。然後只需將UITableView實現添加到.m文件中,您就可以輕鬆完成任務。

+0

我在運行時沒有問題,它只是在故事板內。我無法直觀地修改工具欄,但是在運行時它正確顯示。 – 1dayitwillmake 2012-01-05 23:45:19

+0

好吧,試試我解釋的,也許它會工作。 – JonasG 2012-01-05 23:56:43

+0

這是一個有趣的想法,但我不應該那樣做。我還能夠讓工具欄自行顯示一次。所以我確信有一種方法。 – 1dayitwillmake 2012-01-06 00:10:18

2

爲了回答您的問題,可視化編輯器簡化了大多數控件,視圖層次結構和委派模式的設置,但開發人員仍然需要確保他們簽出。 UITableViewController的實現對Xcode不通過可視化編輯器強制執行的視圖層次結構做出了某些假設和斷言。鑑於您所期望的視圖層次結構不受支持,我必須假定編輯器的行爲是未定義的或不相關的。有關解決方法,請參閱Maxner的建議。