美文网首页storyboard、xib
iOS浅谈storyboard的跳转

iOS浅谈storyboard的跳转

作者: 元宝是只小肥猫 | 来源:发表于2018-11-22 23:22 被阅读5次

    Storyboard:

    • IBAction
      • 本质上的返回值是void.
      • 使方法具备连线功能
    • IBOutlet
      • 使属性具备连线功能
    • IBOutlet容易产生的错误:
      • 当控件连线后,将代码注释掉,程序一运行便会cache掉,报[setvalue: forUndefinedKey] this class is not key value coding-complaint for the key xxx的错误

    1、获取控制器

    //通过storyboard创建控制器
    //先加载storyboard文件(Test是storyboard的文件名)
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Test" bundle:nil];
    //接着初始化storyboard中的控制器
    //初始化“初始控制器”(箭头所指的控制器)
    MyViewController *firstVC = [storyboard instantiateInitialViewController];
    
    //通过一个标识初始化对应的控制器
    DetailViewController *detailVC = [storyboard instantiateViewControllerWithIdentifier:@"detail"];
    

    2、storyboard手动跳转

    ( image

    )


    image
    - (IBAction)gotoPush:(id)sender {
        if ([self.btn.titleLabel.text isEqualToString:@"跳转到B"]) {
            [self performSegueWithIdentifier:@"vcB" sender:@"BBBBB"];
        }else {
            [self performSegueWithIdentifier:@"vcA" sender:@"AAAA"];
        }
    }
    //执行performSegueWithIdentifier时会调用这个方法(准备跳转前调用)
    //一般在此方法中传递数据
    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
        UIViewController *sourceVC = segue.sourceViewController;//源控制器
        UIViewController *desVC = segue.destinationViewController;//目标控制器
        //reason: 'Pushing the same view controller instance more than once is not supported
        //[segue perform];//默认会调用这个方法,自己不能写
    }
    

    跟xib一起走过的坑

    • (1) 如果在xib中有一个控件, 已经明确设置尺寸了,输出的frame也是对的, 但是显示出来的效果不一样(比如尺寸变大了), 如果是这种情况一般就是autoresizingMask自动伸缩属性在搞鬼! 解决办法如下:
    //xib的awakeFromNib方法中设置UIViewAutoresizingNone进行清空
    - (void)awakeFromNib {
    self.autoresizingMask = UIViewAutoresizingNone;
    }
    
    • (2)如果你的控制器的view是用xib创建的, 当你拿到view的尺寸是不准确的, 在这里我们就需要通过[UIScreen mainScreen].bounds拿到尺寸, 但是storyboard的尺寸是准确的!

    相关文章

      网友评论

        本文标题:iOS浅谈storyboard的跳转

        本文链接:https://www.haomeiwen.com/subject/dwxdqqtx.html