如何在故事板中手动切换UIViewControllers? [英] How can I manually switch between UIViewControllers in storyboard?

查看:86
本文介绍了如何在故事板中手动切换UIViewControllers?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我只需要使用代码手动查看同一故事板文件中的 UIView 控制器。我使用故事板来制作所有表格和连接。我的应用程序在导航控制器中启动,它允许我访问 UIView LoginViewController )然后它转到标签栏控制器,提供4 UIViews 。根据每个 UIView 我有 .h .m 文件。我知道segue方法,很简单,但我需要手动方法。也许我做错了。

All I need is to view a UIView controller in same storyboard file manually with code. I use storyboard to make all forms and connections. My application starts in navigation controller, which provides me access to UIView (LoginViewController) and then it goes to tab bar controller, which provides 4 UIViews. According to every UIView I have .h and .m files. I know about segue method, it is simple, but I need manual method. Maybe I am doing something wrong.

我试图在 IBAction中使用此方法推送视图控制器

[self.view pushViewController:LoginViewController animated:YES];

但它出错:


意外的接口名称'LoginViewController':期望的表达式

Unexpected interface name ‘LoginViewController’: expected expression

花了很多时间才弄明白什么是错了,但我没有成功。
这是我的 RollEnemyController.m 文件:

It took a lot of time to figure out what is wrong, but I had not succeed. Here is my RollEnemyController.m file:

//  RollEnemyController.m
#import "RollEnemyController.h"
#import "LoginViewController.h"
@implementation RollEnemyController;
@synthesize AttackButtonPressed;

- (IBAction)AttackButtonPressed:(id)sender {
    LoginViewController* controller = [[LoginViewController alloc] initWithNibName:@"LoginViewController"  bundle:nil];
    [self.view pushViewController:controller];
}

@end

这是头文件:

//  RollEnemyController.h

#import <UIKit/UIKit.h>

@interface RollEnemyController : UIViewController

- (IBAction)RollButtonPressed:(id)sender;
@property (weak, nonatomic) IBOutlet UIButton *AttackButtonPressed;

@end


推荐答案

我我猜你正在使用 UINavigationController 。然后你就可以这样做:

I'm guessing that you are using a UINavigationController. Then you can simply do like this:

LoginViewController *controller = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
[self.navigationController pushViewController:controller animated:YES];

更新:

如果您使用的是 UIStoryboard ,则可以设置新viewcontroller的标识符,然后将其推送到navigationController。要设置标识符,请选择视图,打开属性检查器,然后设置标识符(在我的示例中为LoginIdentifier)。然后你可以这样做:

If you are using a UIStoryboard, you can set the identifier of your new viewcontroller, and then push it onto your navigationController. To set the identifier, choose your view, open the Attributes Inspector, and set the identifier ("LoginIdentifier" in my example). Then you can do this:

LoginViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"LoginIdentifier"];
[self.navigationController pushViewController:controller animated:YES];

作为旁注,我看到你正在为你的方法使用大写字符。您可能应该尝试避免这种情况,而是在方法名称中使用降低的第一个字符。既然你说你正在学习Objective-C,你应该在SO上看看这个很棒的主题:链接

As a sidenote, I see that you are using capital characters for your methods. You should probably try to avoid that, and instead use lowered first-characters in your method names. And since you say you are learning Objective-C, you should check out this awesome thread here on SO: link.

更新2:

这里是一个拉链带有项目的文件,显示如何执行此操作。 : - )

Here is a zip file with a project showing how to do this. :-)

这篇关于如何在故事板中手动切换UIViewControllers?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆