0

だから私は私のメインviewControllerを持っていて、私が持っているのは内部の単一のボタンだけです。ボタンのコードは次のとおりです。

- (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];

現在のView Controllerのみが動作します。実際には、このコードをNavigation Controllerではなく通常のView Controllerに実装します。この次のコードを確認して、上記の行を置き換えます

[self presentModalViewController:eventsViewController animated:YES];

そのため、現在のビュー コントローラーにナビゲーション コントローラーを実装する必要があります。Appdelegate では、ビュー コントローラーを使用してルート ビュー コントローラーをナビゲーション コントローラーに変更します。

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