繁体   English   中英

轻按按钮时如何在iOS的控制器之间进行切换?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM