2014-03-04 36 views
1

我是IOS和Objective C開發新手。我試圖從Web上加載JSON並將其解析爲多級菜單。點擊下一步按鈕後,用戶將被引導至另一個屏幕。 我目前有基本的應用程序中的數據加載到類RootViewController:UITableViewController。 我想在上面顯示導航欄,其中將包含下一個屏幕按鈕。 我已經嘗試了很多選項,但在每個人都沒有顯示導航欄(導航欄本身在那裏,但沒有標題或任何按鈕)。我有基本的XIB,其中只有對象下的tableview。IOS導航欄始終爲空

任何指針我該怎麼做。

示例代碼(RootViewController.m): -

(void)viewDidLoad 

{ 

    DBGS; 

    [super viewDidLoad]; 

//This Failed self.navigationController.navigationItem.rightBarButtonItem=self.navigationController.editButtonItem; 
[email protected]"My Title"; 


//This Also Failed 

UIBarButtonItem *_backButton = [[UIBarButtonItem alloc] initWithTitle:@"left" style:UIBarButtonItemStyleDone target:nil action:nil]; 
self.navigationController.navigationItem.backBarButtonItem = _backButton; 
[email protected]"My Title"; 
[_backButton release]; 

//Remaining Code 

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"contents" ofType:@"json"]; 

self.model = [[TreeListModel alloc] initWithJSONFilePath:filePath]; 

} 

頭文件(RootViewController.h)

#import <UIKit/UIKit.h> 

#import "TreeListModel.h" 

@interface RootViewController : UITableViewController { 

    UINavigationController *navigationController; 
} 

@property (nonatomic, retain) TreeListModel *model; 
@property (strong, nonatomic) UINavigationController *navigationController; 
@property (strong, nonatomic) UIWindow *window; 

@end 

我無法發佈應用圖片。但在o/p屏幕tableview有(正確填充)+藍色NavBar(無標題或按鈕)。

感謝

+0

做你如何設置你的'window'和'self.navigation'控制器?我懷疑你錯過了什麼。由於不需要在'RootViewcontroller'中聲明'navigationController' – NeverHopeless

回答

1

此代碼看起來不完整的,但它看起來像你在不當使用導航控制器一點。

Read up on UINavigationControllers here in the Apple docs

這裏的幾個問題:

  1. 視圖控制器不需要維護額外的參考他們的導航控制器。將視圖控制器添加到導航堆棧時,其導航控制器會自動設置並控制其屬性navigationController

  2. 您正在設置導航控制器的屬性直接爲特定視圖控制器的導航欄進行樣式設置,該導航欄實際上不會執行任何操作。您需要分別設置每個視圖控制器的navigationItem的樣式,導航控制器將自動使用這些屬性來創建實際的導航視圖。 將所有修改navigationItem的代碼更改爲不包含navigationController

所以這樣的:

self.navigationItem.backBarButtonItem = _backButton; 
[email protected]"My Title"; 

編輯: 並添加,因爲很可能你可能會感到困惑如何使用backBarButtonItem。它並不代表您將在添加它的項目上看到的後退按鈕,而是您將看到的後退按鈕返回到當前項目,如果您將其他東西推入堆棧。從文檔 段:

當此導航產品立即在 堆棧頂部項目下方,導航控制器導出用於從該導航項目的 導航欄的返回按鈕。當此屬性爲零時,導航項目使用其標題屬性中的值創建 適當的後退按鈕。如果您想爲後退按鈕指定自定義圖像或 標題,則可以將自定義欄按鈕項目 (包含您的自定義標題或圖像)分配給此屬性。

0

我建議你做Start Developing iOS Apps Today教程,以獲得製作iOS應用程序的感覺。也就是說,我建議您使用導航控制器(帶有標題,但不帶按鈕)和菜單實現第一個屏幕。點擊菜單中的項目可以進入第二個屏幕,您可以在其中顯示所選項目的詳細信息。

您可以下載我製作的樣本項目here,它基本上是您想要的。

重要:設置導航欄標題是簡單地通過使用

self.title = @"My title";