使用storyboard 传值
来源:互联网 发布:构架师和程序员 编辑:程序博客网 时间:2024/06/05 00:45
在iOS5 之前还没有storyboard的时候,两个页面或多个页面间进行传值一般有几种方法:1。属性传值(多用于从前往后传值,比如push的时候),2。代理传值,这个功能就比较强大了,我比较常用这个(pop的时候)。3、单例传值。4、利用通知传值
在使用storyboard之后就可以使用segue进行传值(主要还是从前往后传值,从后往前传还是用代理)
{
//sender:UIButton
CLOG();
//以下三个属性为只读属性,identifier 若为设置的话,会打印一个null.
NSLog(@"%@", [segue destinationViewController] );
NSLog(@"%@", [segue identifier]);
if([[segue identifier] isEqualToString:@"detailViewControllerID"])
{
DetailViewController *detail =[ segue destinationViewController];
detail .textString = segue .identifier;
}
}
可以使用CLOG()查看不同方法的执行顺序。此处CLOG()是个宏定义,它等于 NSLog(@"%s %d",__FUNCTION__,__LINE__)
如果你使用segue时,一般正常的执行顺序是,先执行源ViewController的prepareForSegue,再执行目标VC的ViewDidLoad,所以你可以在prepareForSegue对目的VC的相关属性进行设置,进而达到传值的目的。但是当你segue是使用在Popover的场合时,情况就不一样了,系统是先调用目的的ViewDidLoad再调用源VC的prepareForSegue,颠倒过来了,所以刚刚说的赋值传值的方法就行不通了(特别是你在目的的ViewDidLoad就要用到该属性进行一些逻辑的时候)。
解决方法:方法1、放弃segue,直接代码添加popover。
popover = [[UIPopoverControlleralloc]initWithContentViewController:destinationVC];//运行这句会才调到目的的ViewDidLoad
.......
方法2、把你在viewDidLoad的实现放在一个方法中,在源VC的-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 里使用该方法。- 使用storyboard 传值
- 使用storyboard
- Storyboard使用
- Storyboard使用
- IOS Storyboard中使用Segue传值
- IOS Storyboard中使用Segue传值
- IOS Storyboard中使用Segue传值
- storyboard的跳转 传值 基础使用详解
- storyboard传值
- storyboard传值
- storyboard使用心得
- Storyboard的使用
- 转载:Storyboard使用
- Storyboard的简单使用
- Storyboard的简单使用
- Storyboard 的简单使用
- Storyboard 的简单使用
- Storyboard的简单使用
- Uva 10917 Walk Through the Forest
- 以C++为例子,通过操作内存模拟实现对象的持久化存储(一)
- 16 %>_<%
- Linux下程序(进程)如何获取自身的绝对路径
- matlab下拍照功能的实现
- 使用storyboard 传值
- 实现邮箱中选择所有邮箱功能
- UVA 10344
- 精通BitmapData
- tomcat for AndroidPN
- java产生随机数
- DataList实现编辑,删除,更新,取消,记录转存功能
- 【算法导论】第六章之堆排序
- Datalist使用存储过程来分页。