0

所以我有我的主视图控制器,我只有一个里面的按钮。按钮的代码是:

- (IBAction)eventsButton:(id)sender {
self.eventsViewController =[[EventsViewController alloc]initWithNibName:@"EventsViewController" bundle:nil];
[self.navigationController pushViewController:eventsViewController animated:YES];}

其中 EventsViewController 是另一个控制器,当单击此按钮时我想在其中导航。但是当我点击它时,什么也没有发生。我没有导航到另一个控制器。

ViewController.h
-------------------
#import <UIKit/UIKit.h>

@class EventsViewController;

@interface ViewController : UIViewController <UIActionSheetDelegate>

- (IBAction)eventsButton:(id)sender;

@property (strong, nonatomic) EventsViewController *eventsViewController;


@end




ViewController.m
-----------------
#import "ViewController.h"
#import "EventsViewController.h"

@implementation ViewController

@synthesize eventsViewController;


- (void)didReceiveMemoryWarning
{
    [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, typically from a nib.
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
}

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

- (IBAction)eventsButton:(id)sender {
    self.eventsViewController =[[EventsViewController alloc]initWithNibName:@"EventsViewController" bundle:nil];
    [self.navigationController pushViewController:eventsViewController animated:YES];
}

@end

我在 IBACTION 中放置了一个断点,我看到代码已执行,但它从未将我导航到另一个控制器。另一个控制器只是我用 Xcode 创建的一个简单控制器,它包含 Xcode 提供的所有代码,而没有我的。有任何想法吗?

4

2 回答 2

0

我的猜测是您没有将 ViewController 放在 UINavigationController 中。首先你必须分配和初始化 UINavigationController。所以里面application: didFinishLounchingWithOptions:

ViewController *viewController = [[ViewController alloc] init];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController]
[self.window setRootViewController:navigationController];
[self.window makeKeyAndVisible]

它应该工作。

于 2012-08-28T13:41:36.280 回答
0
[self.navigationController pushViewController:eventsViewController animated:YES];

它仅适用于当前视图控制器是导航控制器。实际上,您在普通视图控制器中而不是在导航控制器中实现此代码。检查以下代码替换上面的行

[self presentModalViewController:eventsViewController animated:YES];

所以你需要为你当前的视图控制器实现导航控制器。在 Appdelegate 中,您使用视图控制器将根视图控制器更改为导航控制器。

UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:yourController] autorelease];
self.window.rootViewController = navController;
于 2012-08-28T13:43:16.180 回答