[英]How to change between controllers when button tapped , iOS?
所以我有我的主要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提供的所有代码,没有任何东西。 有任何想法吗?
我的猜测是您没有将ViewController放在UINavigationController中。 首先,您必须分配并初始化UINavigationController。 所以在内部application: didFinishLounchingWithOptions:
ViewController *viewController = [[ViewController alloc] init];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController]
[self.window setRootViewController:navigationController];
[self.window makeKeyAndVisible]
它应该工作。
[self.navigationController pushViewController:eventsViewController animated:YES];
它只能在当前视图控制器中使用导航控制器。实际上,您是在普通视图控制器中而不是在导航控制器中实现此代码的。 检查以下代码替换上面的行
[self presentModalViewController:eventsViewController animated:YES];
因此,您需要为当前的视图控制器实现导航控制器。 在Appdelegate中,将根视图控制器更改为带有视图控制器的导航控制器。
UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:yourController] autorelease];
self.window.rootViewController = navController;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.