0

我想用導航欄和表格視圖來製作一個簡單的視圖。所以我創建了一個UINavigationController的子類,並在其中添加了一個UITableView。我的也是UITableViewDataSourceUITableViewDelegate。現在我想在導航欄中添加UIBarButton,但它不工作:UIBarButton不會顯示在我的UINavigationController中

UIBarButtonItem *anotherButton = [[UIBarButtonItem alloc] initWithTitle:[[Translator instance] getTranslation:@"Back"] 
                    style:UIBarButtonItemStylePlain 
                   target:self.parentViewController 
                   action:@selector(dismissFiltersModal:)];   
self.navigationItem.backBarButtonItem = anotherButton; 

沒有錯誤時顯示的視圖,但不是按鈕。我該如何顯示它?

回答

1

賈法爾,

蘋果文檔建議您應避免繼承UINavigationController

該類不適用於子類。

說這話時,你可以按照以下步驟簡單(一些建議你):

  • 創建你的控制器擴展UIViewController(比如MyController),並在這裏添加表。將您的控制器設置爲該表的代表和數據源。如果您是由xib創建的,則需要爲您的表視圖提供插座。

[P.S。你也可以繼承一個UITableViewController,它有一個表中查看自己的]

  • MyControllerviewDidLoad自定義導航欄。

例如

UIBarButtonItem* myButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(someSelector)]; 
self.navigationItem.leftBarButtonItem = myButton; 

你也可以自定義標題。

例如

self.title = @"Your custom title"; 
  • 某處在代碼中創建一個UINavigationController並添加作爲根視圖控制器MyController一個實例。

例如:

MyController* myCtr = // alloc-init here 
UINavigationController* nc = [[UINavigationController alloc] initWithRootViewController:myCtr]; 
+0

偉大工程:)因爲我呈現視圖爲模態的看法是有規定的方式,讓來電者MyController中的引用?因爲如果我使用self.parentViewController,它會引用UINavigationController nc,而不是從我提交模態視圖的對象(這是正常的我猜)。 – Alexis

1

backBarButtonItem應該在前一個視圖控制器上設置,而不是當前要顯示的視圖控制器。例如,如果您正在查看A,請從B導航到B,B A的backBarButtonItem將顯示,而不是 B。

如果您只是想在導航欄的左側顯示一個項目,您可以使用leftBarButtonItem來替代,這將在該控制器上顯示一個正常的條形按鈕。它將是矩形的,而不是像普通的後退按鈕那樣的箭頭。

1

你怎麼樣試試這個:

UIButton* backButton = [UIButton buttonWithType:101]; // left-pointing shape! 
     [backButton addTarget:self action:@selector(dismissFiltersModal:) forControlEvents:UIControlEventTouchUpInside]; 
     [backButton setTitle:@"Back" forState:UIControlStateNormal]; 

// create button item -- 
UIBarButtonItem* backItem = [[UIBarButtonItem alloc] initWithCustomView:backButton]; 

// add to toolbar 
self.navigationItem.leftBarButtonItem = backItem; 
+0

我試過這個,但是按鈕沒有左指向的形狀。文字只是稍微向右移動:/ – Alexis

相關問題