iphone开发之导航控制器的使用

来源:互联网 发布:手机淘宝删除不了评价 编辑:程序博客网 时间:2024/06/08 13:11

我们在应用开发时经常需要实现很多功能,这时常常需要构建多视图应用程序,在ios平台下我们可以使用UINavigationController(导航控制器)来实现。

新建一个基于View的项目,修改AppDelegate.h中的代码如下:

#import <UIKit/UIKit.h>@class ViewController;@interface AppDelegate : UIResponder <UIApplicationDelegate>@property (strong, nonatomic) UIWindow *window;@property (strong, nonatomic) ViewController *viewController;@property (nonatomic, retain) UINavigationController *navController;@end

我们定义了一个导航控制器,下面我们为导航控制器添加跟视图。在AppDelegate.m中修改一下代码:

@synthesize navController;- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];    // Override point for customization after application launch.    self.navController = [[UINavigationController alloc] init];        self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];    [self.navController pushViewController:self.viewController animated:YES];    [self.window addSubview:self.navController.view];    [self.window makeKeyAndVisible];    return YES;}


这里主要是初始化我们的导航控制器,然后为导航控制器添加子视图并在窗口中显示。

现在我们要在ViewController.h中定义一个按钮事件,用来响应我们根视图中的按钮事件。(如图中start按钮)



- (IBAction)startPressed:(id)sender;

然后再ViewController.m中实现该方法:

- (IBAction)startPressed:(id)sender{    FirstViewController *firstViewController = [[FirstViewController alloc] init];    [self.navigationController pushViewController:firstViewController animated:YES];    [firstViewController release];}


我们定义一个新的的视图控制器firstViewController并添加到导航控制器中。FirstViewController实现了TableView如图:


关于TableView控件的使用可参考我这篇博文:iphone开发之TableView控件实例

为了程序更直观,我们在viewDidLoad()方法中添加如下代码为我们的应用程序添加标题:


- (void)viewDidLoad{    [super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.    self.title = @"Cloay";}

在FirstViewController.m 中添加如下代码:

#pragma mark - Table view delegate- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{    // Navigation logic may go here. Create and push another view controller.     SecondViewController *detailViewController = [[SecondViewController alloc] init];    NSUInteger row = [indexPath row];    detailViewController.title = [self.listData objectAtIndex:row];     [self.navigationController pushViewController:detailViewController animated:YES];     }
通过该方法我们实现了从FirstLevel进入SecondLevel如下图:如果我们选了Kobe

    

如果选了James:



我们看到图中有一张图片和一个Next按钮,你一定想到了我们要在试图中添加一个ImageView控件并要为Next按钮添加事件代码如下:

- (IBAction)nextPressed:(id)sender{    ThirdViewController *thirdViewController = [[ThirdViewController alloc] init];    [self.navigationController pushViewController:thirdViewController animated:YES];    [thirdViewController release];}

上面我们为按钮添加响应,我们还要在viewDidLoad中为ImageView设置图片:

- (void)viewDidLoad{    [super viewDidLoad];    // Do any additional setup after loading the view from its nib.//    self.title = @"Second Level";    NSLog(@"%@", self.title);    if ([self.title isEqualToString:@"Kobe"]) {        UIImage *portrait = [UIImage imageNamed:@"Kobe-Bryant.jpg"];        self.image.image = portrait;        [portrait release];    }else if([self.title isEqualToString:@"James"]){        UIImage *portrait = [UIImage imageNamed:@"James.jpg"];        self.image.image = portrait;        [portrait release];    }else{        UIImage *portrait = [UIImage imageNamed:@"ladybug.jpg"];        self.image.image = portrait;        [portrait release];    }    }

我们根据title来设置图片。点击Next按钮进入ThirdLevel如图:


ThirdViewController中很简单只有一个Label控件,这里就不在贴代码了。

怎么样多视图程序就这样实现了,这只是一个简单的demo,你可以实现自己的功能。

好了就写这么多,有什么问题请留言,大家一起学习交流!

说明:转载请注明出处!


原创粉丝点击