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

相关文章

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

Android自定义Scrollbar的两种实现方式

《Android自定义Scrollbar的两种实现方式》本文介绍两种实现自定义滚动条的方法,分别通过ItemDecoration方案和独立View方案实现滚动条定制化,文章通过代码示例讲解的非常详细,... 目录方案一:ItemDecoration实现(推荐用于RecyclerView)实现原理完整代码实现

Mysql中深分页的五种常用方法整理

《Mysql中深分页的五种常用方法整理》在数据量非常大的情况下,深分页查询则变得很常见,这篇文章为大家整理了5个常用的方法,文中的示例代码讲解详细,大家可以根据自己的需求进行选择... 目录方案一:延迟关联 (Deferred Join)方案二:有序唯一键分页 (Cursor-based Paginatio

基于Spring实现自定义错误信息返回详解

《基于Spring实现自定义错误信息返回详解》这篇文章主要为大家详细介绍了如何基于Spring实现自定义错误信息返回效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录背景目标实现产出背景Spring 提供了 @RestConChina编程trollerAdvice 用来实现 HTT

SpringSecurity 认证、注销、权限控制功能(注销、记住密码、自定义登入页)

《SpringSecurity认证、注销、权限控制功能(注销、记住密码、自定义登入页)》SpringSecurity是一个强大的Java框架,用于保护应用程序的安全性,它提供了一套全面的安全解决方案... 目录简介认识Spring Security“认证”(Authentication)“授权” (Auth

使用Folium在Python中进行地图可视化的操作指南

《使用Folium在Python中进行地图可视化的操作指南》在数据分析和可视化领域,地图可视化是一项非常重要的技能,它能够帮助我们更直观地理解和展示地理空间数据,Folium是一个基于Python的地... 目录引言一、Folium简介与安装1. Folium简介2. 安装Folium二、基础使用1. 创建

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

使用DeepSeek搭建个人知识库(在笔记本电脑上)

《使用DeepSeek搭建个人知识库(在笔记本电脑上)》本文介绍了如何在笔记本电脑上使用DeepSeek和开源工具搭建个人知识库,通过安装DeepSeek和RAGFlow,并使用CherryStudi... 目录部署环境软件清单安装DeepSeek安装Cherry Studio安装RAGFlow设置知识库总