专栏首页青玉伏案IOS开发之获取Storyboard创建的ViewController

IOS开发之获取Storyboard创建的ViewController

  前面的两篇博客都是学习有关屏幕适配也就是相对布局的东西,这篇博客中将会学习视图间的切换。视图间的切换我们可以用代码完成或者用storyboard来建立各个视图控制器间的关系。在需要用到代码进行切换时会用代码进行视图间的跳转。下面的东西我们会主要介绍到NavigationController来进行视图间的切换。下面也是和之前一样把代码和storyboard结合起来学习。

  下面介绍一下我们要实现的功能和效果: App打开的第一个界面是登陆页面,登陆页面由用户名和密码以及一个登陆按钮构成。当登陆成功时会push到第二个页面,第二个页面有三个按钮,A,B和C, 点击不同的按钮然后会跳转到相应的View。

  1.首先我们先用我们的storyboard来拖拽出我们要用的控件,再添加一个NavigationController,下面图一是给我们的主视图添加NavigatinController, 图二是最终效果

  2.因为要由登陆状态来判断下面的View是否出现,所以主视图和带有A,B,C三个按钮的视图之间的切换不能用storyboard实现,我们要用代码关联实现。下面是登陆成功后要跳转的模块截图:

  3.以上拖拽工作到此结束,下面要实现我们的业务逻辑和关联视图之间的关系,为了关联视图时能找到带有三个按钮的视图,我们需要设置一下该视图的StoryboardID,入下图  

  4.下面来编写我们的代码,上面我们用到了TextField,我们需要处理键盘的回收事件,所以我们的ViewController要遵守UITextFiledDelegate协议,实现有关键盘的方法

    (1)遵守UITextFieldDelegate协议

1 2 3 4

#import <UIKit/UIKit.h>   @interface ViewController : UIViewController<UITextFieldDelegate> @end

​    (2)在ViewController.m中中进行回调注册和实现协议中相应的方法,代码如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14

-(BOOL) textFieldShouldReturn:(UITextField *)textField {     [self.userName resignFirstResponder];     [self.password resignFirstResponder];     return YES; }   - (void)viewDidLoad {     [super viewDidLoad];     // Do any additional setup after loading the view, typically from a nib.     self.userName.delegate = self;     self.password.delegate = self; }

  5.处理完键盘的事儿,就该处理我们当登陆按钮点击时回调的事件了,首先在回调方法中获取TextFiled的值,由值的情况来实现是否进行页面间的切换。 在页面切换时我们得关联两个页面中的关系。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

- (IBAction)tapButton:(id)sender {           NSString *username = self.userName.text;     NSString *password = self.password.text;           if ([username isEqualToString:@"admin"] && [password isEqualToString:@"admin"])     {         //获取storyboard: 通过bundle根据storyboard的名字来获取我们的storyboard,         UIStoryboard *story = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];                   //由storyboard根据myView的storyBoardID来获取我们要切换的视图         UIViewController *myView = [story instantiateViewControllerWithIdentifier:@"myView"];                   //由navigationController推向我们要推向的view         [self.navigationController pushViewController:myView animated:YES];               }   }

​      代码说明:关联两个View需要三部

        1.获取storyboard: 通过bundle的名获取bundle, 在通过storyborad的名字来获取我们的storyboard;

        2.在由storyboard获取storyboardID是myView的View;

        3.执行由当前View推向我们获取到的myView;

    至此我们的主要代码就编写完成,接下来看一下运行效果吧:

  先简单的说这些吧,以后学到了新的内容在更新博客内容,欢迎批评指正。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • IOS开发之TabBarItem&NavigationBarItem

      想必大家都用过微信,微信间的页面切换是如何做成的呢?接下来我们用storyboard结合着代码来模拟一下微信的视图控制模式。   "工欲善其事,必先利其器"...

    lizelu
  • Objective-C中的老板是这样发通知的(Notification)

        ​    ​通知(Notification)简单的类比一下,公司的老总给下面的员工发通知啦,说明天公司要上市,各部门做一下准备工作。等通知发完,各部门收...

    lizelu
  • 代码重构(四):条件表达式重构规则

    继续更新有关重构的博客,前三篇是关于类、函数和数据的重构的博客,内容还算比较充实吧。今天继续更新,本篇博客的主题是关于条件表达式的重构规则。有时候在实现比较复杂...

    lizelu
  • 笔记25 | 通过自定义VIEW实现一个圆盘转动UI

    项勇
  • Altium Designer 16 安装教程

    课代表
  • 移植Windows自宿主WCF服务到Linux/Mono2.8

    Windows服务是这些后台程序、后台服务的正规名词。Windows服务的运行可以在没有用户干预的情况下,在后台运行,没有任何界面。通过Windows服务管理器...

    张善友
  • 《Web Server for Chrome》搭建本地Web服务器, 实现局域网共享文件夹

    需要在我的电脑里, 开启一个http服务, 让小伙伴们通过Chrome浏览器访问就好了

    zhaoolee
  • Altium Designer 17 安装教程

    课代表
  • Python篇-多进程与协程的理解与使用

    一 : 科普一分钟 尽管进程间是独立存在的,不能相互访问彼此的数据,但是在python中却存在进程间的通信方法,来帮助我们可以利用多核CPU也能共享数据....

    小小科
  • 基于zookeeper的主备切换方法

    继承CZookeeperHelper即可快速实现主备切换: https://github.com/eyjian/mooon/blob/master/mooo...

    一见

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动