iOS个人整理23-可视化编辑2-StoryBoard,segue跳转,可视化自定义cell

本文主要是介绍iOS个人整理23-可视化编辑2-StoryBoard,segue跳转,可视化自定义cell,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、storyBoard的使用


StoryBoard的本质是一个xml文件,在编译时生成nib的二进制文件,运行时nib文件被加载并开始创建和实例化GUI元素

使用storyBoard的项目均以初始化storyBoard文件作为整个程序的初始化入口


xib和StoryBoard的对比

相同:都属于IB编程的方式,可以快速创建GUI

不同:xib侧重于单文件编辑,storyBoard侧重于多页面关联。storyBoard可以直观看到页面之间的逻辑,并且所有页面跳转逻辑均可在

-(void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender方法中完成方便界面间数据统一管理。


这里还有一个问题,如果界面过多,可以放在不同的storyBoard里,逻辑更加清晰,渲染也更快。根据新的storyBoard的名字,就能通过代码得到对应的storyBoard。


1.设置主启动的storyBoard,这两个地方填storyBoard的名字,决定哪个storyBoard是入口,两处修改一处即可,编译时另一处会自动修改

第一图是工程的General中

  


2.设置应用程序的初始窗体,设置该storyBoard的第一个视图是哪个ViewController




3.在storyBoard中的Controller可以设标识,通过标识在storyBoard中创建视图控制器对象


    //得到storyBoardUIStoryboard *tabBarSB = [UIStoryboard storyboardWithName:@"TabBarController" bundle:nil];//得到VCUITabBarController *tabBarC = [tabBarSB instantiateViewControllerWithIdentifier:@"tabBarC"];


二、storyBoard的跳转和segue


storyBoard页面跳转有两种

1.代码方法使用代码通过segue标识来跳转,segue要提前定义好,要把identifier填好

如果想进行判断后再跳转,比如登录验证,就可以使用下面的方法,但是拉segue的时候就不从button上面拉,选中第一个ViewController,拉到第二个ViewController可以产生一个view到view的segue,通过按钮触发这个segue

通过点击按钮调用下面的方法来触发这个segue

 [self performSegueWithIdentifier:@"toSecondSegue" sender:nil];

2.直接拖拽,拖拽按钮的连线关联两个页面,会产生一条关联线segue,不需要添加相应方法

  


show:push出下个界面

show Detail:replace

Present Modally:模态出下个界面

Present As Popover:模态推出

Custom:自定义,需要自定义segue


自定义segue


1.新建一个类继承于UIStoryBoardSegue

2.选中前一个视图控制器,连线后选中Custom

3.选中自定义segue,设置segue的identifier和关联类

4.在segue里重写perform方法(界面间跳转默认执行的方法),自定义跳转效果

-(void)perform
{//获取当前VCUIViewController *vc_1 = [self sourceViewController];//目标UIViewController *vc_2 = [self destinationViewController];//跳转[vc_1.navigationController pushViewController:vc_2 animated:YES];//这里提一下使用加动画的跳转//如果是两个ViewController之间需要动画跳转,需要将将要出现的VC作为当前VC的子控制器//否则进行下面的页面切换,新的view上的控件都是不显示的//这样大家共用一个navigationController[vc_1.navigationController addChildViewController:vc_2];[vc_1.navigationController.view addSubview:vc_2.view];//自定义页面切换效果,新的界面的控件不显示[UIView transitionFromView:vc_1.view toView:vc_2.view duration:0.5 options:UIViewAnimationOptionTransitionFlipFromTop completion:nil];//如果要各自使用不同的navigationController
/*UINavigationController *navC = [[UINavigationController alloc]initWithRootViewController:vc_2];[self.navigationController addChildViewController:navC];[self.navigationController.view addSubview:navC.view];[UIView transitionFromView:self.navigationController.view toView:navC.view duration:0.25 options:UIViewAnimationOptionTransitionFlipFromLeft completion:nil];  
*/}


界面间传值

在跳转时会执行-(void)prepareForSegue:(UIStoryBoardSegue*)segue sender:(id)sender方法

在这个方法里根据不同的segue标识符来完成数据处理

//segue:转场,通过该方法以得到(A push B) A和B
//sender:我们点击某个控件触发的跳转动作
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{//这里有个问题,如果控制器有多个segue,要进行判断,不然后续对错误的控制器进行操作,会崩//判断是哪个segueif ([segue.identifier isEqualToString:@"toSecondSegue"]) {NSLog(@"to detailVC");//得到发起跳转的ViewControllerUIViewController *selfController = [segue sourceViewController];//得到目标ViewController,即将跳转到的ViewControllerSecondViewController *secondVC = [segue destinationViewController];secondVC.myTitle = @"1111";}//还有一种通过storyBoard得到VC的方法,要给视图控制器设置好storyBoardID
//    UIStoryboard *mainSB = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
//    SecondViewController *secondVC = [mainSB instantiateViewControllerWithIdentifier:@"SecondVC"];//但这种方法赋值不了,下面一句没有效果
//    secondVC.myTitle = @"2222";}

 


三、storyBoard自定义cell


storyBoard自定义cell的步骤,这个不记少了什么就很烦


如果我们自己拖一个UITableViewController,或者,给一个ViewController上拖一个UITableView,再给UITableView上拖一个UITableViewCell

我们会看到这样的情况,当然,上面的label和button要自己加



以UITableViewController为例

1.先拖一个UITableViewController控件到storyBoard

2.创建一个UITableViewController类

3.将两者关联



4.创建一个UITableViewCell的类,并让它于控件上的CELL关联,这里要注意,一定要点对位置,确定选择了cell

这一看那个拖拉大小的小点,选择了cell一定会出现


5.在storyBoard上给cell添加控件,并与自定义的CustomTableviewCell类关联。

6.在storyBoard创建表视图的方法中,在UITableViewController类中不需要进行cell的注册,导入CustomTableviewCell,直接使用即可

  如果使用系统自带的可视化板上的Cell,也是要设置Identifier的,不用注册。

7.其他代理方法与Tableview无异


这里经常出问题,cell没有找到,通常是跳转的方法有问题,要通过mainStoryBoard去找对应的视图控制器,才能对应好prototype cells



这篇关于iOS个人整理23-可视化编辑2-StoryBoard,segue跳转,可视化自定义cell的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/980710

相关文章

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

一文详解Java Stream的sorted自定义排序

《一文详解JavaStream的sorted自定义排序》Javastream中的sorted方法是用于对流中的元素进行排序的方法,它可以接受一个comparator参数,用于指定排序规则,sorte... 目录一、sorted 操作的基础原理二、自定义排序的实现方式1. Comparator 接口的 Lam

Python变量与数据类型全解析(最新整理)

《Python变量与数据类型全解析(最新整理)》文章介绍Python变量作为数据载体,命名需遵循字母数字下划线规则,不可数字开头,大小写敏感,避免关键字,本文给大家介绍Python变量与数据类型全解析... 目录1、变量变量命名规范python数据类型1、基本数据类型数值类型(Number):布尔类型(bo

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

如何自定义一个log适配器starter

《如何自定义一个log适配器starter》:本文主要介绍如何自定义一个log适配器starter的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求Starter 项目目录结构pom.XML 配置LogInitializer实现MDCInterceptor

MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键