建立這樣一個項目:
在Model中建立一個簡單的 view 介面,而 ViewController 類是一個表格的介面
建立表格的介面:
第一步:
第二步:
注意: Subclass of 的選項要選擇 UITableViewController
然後下一步,最後點擊create就可以了
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
在ViewController這個介面中建立導航添加進去
/*AppDelegate.h*/#import <UIKit/UIKit.h>@class ViewController;@interface AppDelegate : UIResponder <UIApplicationDelegate>@property (strong, nonatomic) UIWindow *window;//添加導航控制器@property (strong,nonatomic) UINavigationController *iNav;//添加ViewController介面,添加這個介面的目的是為了把導航加入到這個介面中@property (strong,nonatomic) ViewController *viewController;@end
/*AppDelegate.m*/#import "AppDelegate.h"#import "ViewController.h"@implementation AppDelegate@synthesize window = _window;//-----------------@synthesize iNav = _iNav;@synthesize viewController = _viewController;//------------------ (void)dealloc{ [_iNav release]; [_viewController release]; [_window release]; [super dealloc];}- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; // Override point for customization after application launch. self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; /*---------------添加的內容----------------*/ self.viewController = [[ViewController alloc]initWithNibName:@"ViewController" bundle:nil]; //initWithRootViewController 基於哪個頁面導航(就是把導航加到哪個頁面中) self.iNav = [[UINavigationController alloc]initWithRootViewController:self.viewController]; //添加到window中 [self.window addSubview:self.iNav.view]; //或下面這種方法 //self.window.rootViewController = self.iNav; return YES;}
然後在 ViewController.m 類中為導覽列寫一個title
在 - (void)viewDidLoad 這個方法中添加:
self.title = @"這是一個導航";
到這裡就實現了在這個介面中添加一個導覽列。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
但是到這裡並沒有體現出導航的作用,所以,我們進行下面的操作:
這個介面是一個表格介面,在這個介面中新增內容,然後通過它切換到另外一個介面中,從而實現導航的作用:通過導航返回第一個介面中
還是在 ViewController.m 這個類中:
在 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 方法中的
return cell; 前加入這樣一段代碼:
//輸入內容 cell.textLabel.text = @"helloworld"; //得到每一行的索引值 int num = indexPath.row;
在這個類中有這樣兩個方法,分別是設定有幾塊地區和每塊地區有幾行
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ // Return the number of sections. // 返回有幾塊地區 return 1;}- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ // Return the number of rows in the section. return 2;// 返回一個地區有幾行}
這個時候的介面是:
點擊 helloworld 進入下一個介面,就是 UiViewController.xib 介面中,在這個介面中有一個 label 控制項
還是在ViewController.m這個類中實現切換介面的操作:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ UiViewController *viewController = [[UiViewController alloc]initWithNibName:@"UIViewController" bundle:nil]; //navigationController 是從 UIViewController 中繼承下來的屬性,通過這個屬性來調用它的壓棧方法,來實現介面的切換 /* @property(nonatomic,readonly,retain) UINavigationController *navigationController; // If this view controller has been pushed onto a navigation controller, return it. */ [self.navigationController pushViewController:viewController animated:YES]; // Navigation logic may go here. Create and push another view controller. /* <#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil]; // ... // Pass the selected object to the new view controller. [self.navigationController pushViewController:detailViewController animated:YES]; [detailViewController release]; */}
注意:不要忘記添加標頭檔 :
#import"UiViewController.h"
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
好了,這樣就實現了導航的作用了
點擊helloworld 進入下一個介面。
進入到第二個介面中可以看到,導覽列的位置上有一個返回的按鈕,點擊就可以返回第一個介面了