我想使用导航控制器来帮助我导航到First View&从主控制器查看第二个视图,无需创建后退按钮,导航控制器将为我处理它。
我该怎么做?我假设我将导航控制器放在MainWindow.xib中。
请指导我编辑以下代码,从应用程序中完全实现导航控制器。
这里有完整的代码(标题和实现):
MainControllerView.h代码
#import <UIKit/UIKit.h>
@class FirstView;
@class SecondView;
@interface MainControllerView : UIViewController {
IBOutlet UILabel *label;
IBOutlet UIButton *firstView;
IBOutlet UIButton *secondView;
FirstView *firstView1;
SecondView *secondView1;
}
@property(nonatomic,retain) IBOutlet UILabel *label;
@property(nonatomic,retain) IBOutlet UIButton *firstView;
@property(nonatomic,retain) IBOutlet UIButton *secondView;
-(IBAction) FirstView:(id)sender;
-(IBAction) SecondView:(id)sender;
@end
MainControllerView.m
#import "MainControllerView.h"
#import "FirstView.h"
#import "SecondView.h"
@implementation MainControllerView
@synthesize label,firstView,secondView;
-(IBAction) FirstView:(id)sender
{
firstView1 = [[FirstView alloc]
initWithNibName:@"FirstView"
bundle:nil];
[self.view addSubview:firstView1.view];
}
-(IBAction) SecondView:(id)sender
{
secondView1 = [[SecondView alloc]
initWithNibName:@"SecondView"
bundle:nil];
[self.view addSubview:secondView1.view];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)dealloc
{
[super dealloc];
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
FirstView.h
#import <UIKit/UIKit.h>
@class MainControllerView;
@interface FirstView : UIViewController {
IBOutlet UIButton *backButton;
MainControllerView *mainControllerView;
}
@property(nonatomic,retain) IBOutlet UIButton *backButton;
@end
FirstView.m
#import "FirstView.h"
#import "MainControllerView.h"
@implementation FirstView
@synthesize backButton;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)dealloc
{
[super dealloc];
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(5,18,100,40);
[button setImage:[UIImage imageNamed:@"backbutton.png"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(BackAction:) forControlEvents:UIControlEventTouchUpInside];
button.backgroundColor = [UIColor clearColor];
[self.view addSubview:button];
// Do any additional setup after loading the view from its nib.
}
-(IBAction) BackAction:(id)sender
{
mainControllerView = [[MainControllerView alloc]
initWithNibName:@"MainControllerView"bundle:nil];
[self.view addSubview:mainControllerView.view];
[mainControllerView.view release];
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
SecondView.h
#import <UIKit/UIKit.h>
@class MainControllerView;
@interface SecondView : UIViewController {
IBOutlet UIButton *backButton;
MainControllerView *mainControllerView;
}
@property(nonatomic,retain) IBOutlet UIButton *backButton;
@end
SecondView.m
#import "SecondView.h"
#import "MainControllerView.h"
@implementation SecondView
@synthesize backButton;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)dealloc
{
[super dealloc];
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(5,18,100,40);
[button setImage:[UIImage imageNamed:@"backbutton.png"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(BackAction:) forControlEvents:UIControlEventTouchUpInside];
button.backgroundColor = [UIColor clearColor];
[self.view addSubview:button];
// Do any additional setup after loading the view from its nib.
}
-(IBAction) BackAction:(id)sender
{
mainControllerView = [[MainControllerView alloc]
initWithNibName:@"MainControllerView"bundle:nil];
[self.view addSubview:mainControllerView.view];
[mainControllerView.view release];
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
答案 0 :(得分:2)
在您的app委托中,只需在applicationDidFinishLoading方法上添加此代码。
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
[window makeKeyAndVisible];
[window addSubview:navController.view];
并且不要忘记在initWithNibName方法中设置标题......
self.title = @"Page Title";
或者您可以通过选择导航控制器模板来启动项目,但仍然不要忘记设置标题...