2009-09-19 35 views
0

我將一個UINavigationBar放到XIB表單上。然後我在表單上放了一個UIButton(不在UINavigationBar上)。我將其類型更改爲InfoLight(使它看起來像一個信息符號)。如何連接UINavigationBar中的按鈕?

然後我拖動UIButton到UINavigationBar並將其設置爲正確的按鈕。由於拖動,它會奇蹟般地將UIButton更改爲UIButtonBarItem

爲什麼我沒有把UIButton拖到UINavigationBar上?因爲,一旦按鈕出現,界面生成器不會讓你改變類型爲InfoLight出於任何原因。

將在毗鄰的.h文件中,我創建了IBAction

- (IBAction) btnInfoClick; 

聲明然後在.m文件,我寫的實現:

- (IBAction) btnInfoClick { 
    // kick off the about screen 
    // code follows 
} 

我現在該如何掛鉤將導航欄上的按鈕添加到我的btnInfoClick函數中?

或者我是以錯誤的方式開始呢?

我應該注意到,如果我只是從庫中直接拖動一個按鈕到導航欄上,我可以單擊文件所有者圖標,然後將btnInfoClick IBAction拖到該按鈕上。在這種情況下,點擊事件觸發正常。

但是,在我第一次將按鈕拖到其他地方然後拖到導航欄上的情況下,事件從不會觸發。不知道我做錯了什麼。

回答

0

我想,這是IB的一個bug。但是我找到了一個解決方法here。轉發後人:

  1. 在視圖中創建一個按鈕(不是導航欄!)
  2. 設置此按鈕將信息光
  3. 設置此按鈕的動作是觸摸內線補
  4. 移動按鈕,導航欄
1

打開IB,選擇UIBarButtonItem,然後在檢查器中,轉至連接選項卡。

從點拖動在選擇到您的的AppDelegate/文件的所有者權(其中,動作已經定義了一個),並選擇操作。

我想你已經嘗試過,但以防萬一。當動作沒有出現時,嘗試調整您的動作定義,如下所示:

- (IBAction)btnInfoClick:(id)sender; 

並重試該過程。我知道你並不需要指定發送者(至少是編程方式,我總是使用這種方式),但是我遇到了同樣的問題,並且在添加發件人蔘數之後它的工作正常。

祝你好運,讓我知道這是否工作!