iPhone NavigationController应用程序

时间:2012-08-07 20:00:26

标签: iphone uiviewcontroller uinavigationcontroller

我正在按照教程here使用UINavigationController在ViewControllers之间切换。如果我下载代码并按照教程,它可以正常工作,但当我尝试将其应用于不同的应用程序时,我会遇到以下混淆/问题。当我在“FirstViewController”中时,如果我的viewController类中没有任何navigationController,如何访问[self navigationController]?在这个例子中,我无法找到navigationController在FirstViewController中的来源和位置。有人可以解释这是如何工作的吗?

**注意:整个项目的完整源代码也可以在我上面链接的页面上找到。

这条线让我感到困惑:

[[self navigationController] pushViewController:secondViewController   animated:YES];

这是viewController的完整代码:

·H

#import <UIKit/UIKit.h>
@class SecondViewController;

@interface FirstViewController : UIViewController {

    IBOutlet SecondViewController *secondViewController;
}

@property(nonatomic, retain) SecondViewController *secondViewController;

- (IBAction)PressMe:(id)sender;

@end

的.m

#import "FirstViewController.h"
#import "SecondViewController.h"


@implementation FirstViewController

@synthesize secondViewController;

- (void)viewDidLoad {
    [super viewDidLoad];
    self.title = @"First View";
}

- (IBAction)PressMe:(id)sender
{
    [[self navigationController] pushViewController:secondViewController animated:YES]; //This line
}


- (void)dealloc {
    [super dealloc];
}


@end

3 个答案:

答案 0 :(得分:1)

来自Apple's Documentation

  

如果接收器或其祖先之一是导航控制器的子节点,则此属性包含拥有的导航控制器。如果视图控制器未嵌入导航控制器中,则此属性为nil。

因此您无需声明导航控制器。如果当前视图控制器已加载到导航控制器上,那么您引用的行将为您提供当前导航控制器

答案 1 :(得分:0)

简单地说,您没有任何导航控制器,因此您无法使用此

从视图切换到另一个
[[self navigationController] pushViewController:secondViewController   animated:YES];

在FirstView中创建导航控制器对象,并使用它在视图之间移动 并在你的PressMe方法中:

SecondViewController *secondView = [[secondView alloc] initWithNibName:@"SecondViewController" bundle:nil];
        [self.navigationController pushViewController:secondView animated:YES];
[secondView release];

答案 2 :(得分:0)

如果您正在使用IB(在代码中编写时),请右键单击该按钮,将其拖至SecondViewController,然后选择“Touch Up Inside”