• StoryBoard中segue的使用


    StoryBoard中segue的使用

    点击button跳转到下一个页面, 条件是textField里有值时才能实现跳转功能, 否则不跳转, 这个功能的实现就需要用到segue

    首先在storyboard中viewController中拖入一个imageView textField UIButton, 在ViewController中拉入一条segue选择modal到下一个页面, 关联方法到ViewController中

    在segue中添加标识

     

       输入内容不为空得时候, 进行页面间跳转

       触发标识符为pushToNextVC的这个sugue

       performSegueWithIdentifier: sender: 用来触发segue 

    触发segue sender 用来传值
    - (IBAction)clickMe:(id)sender {
        if (self.textField.text.length != 0) {
            [self performSegueWithIdentifier:@"pushToNextVC" sender:nil];
        } else {
            //输入框为空的话, 提示重新输入
            [[[UIAlertView alloc] initWithTitle:@"温馨提示" message:@"您的输入框不能为空" delegate:nil cancelButtonTitle:@"好的" otherButtonTitles: nil] show];
        }
    }
    
    segue即将调用的方法
    一般传值都在这里进行处理
    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
        //判断调用哪根线
        //根据标识符
        if ([segue.identifier isEqualToString:@"pushToNextVC"]) {
            //destinationViewController 目标视图控制器
            SecondViewController *secVC = segue.destinationViewController;
            secVC.text = self.textField.text;
        }
    }
    SecondViewController..m
    #import "SecondViewController.h"
    #import "MyTableViewCell.h"
    @interface SecondViewController ()<UITableViewDataSource, UITableViewDelegate>
    - (IBAction)back:(id)sender;
    
    @property (weak, nonatomic) IBOutlet UITableView *tableView;
    @end
    
    @implementation SecondViewController
    - (void)dealloc
    {
        //安全释放(safe-release)
        //先释放后置空
        self.myLabel = nil;
    }
    - (void)setMyLabel:(UILabel *)myLabel {
        if (_myLabel != myLabel) {
            _myLabel = myLabel;
        }
    }
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        //给label的text赋值
        self.myLabel.text = self.text;
        //注册Cell
        //cell 的创建方式决定注册 class 还是 nib
        //XIB创建Cell, 就注册nib
        //和UITableView的创建方式无关
        [self.tableView registerNib: [UINib nibWithNibName:@"MyTableViewCell" bundle:[NSBundle mainBundle] ]forCellReuseIdentifier:@"cellID"];
       }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    #pragma mark - Navigation
    // In a storyboard-based application, you will often want to do a little preparation before navigation
    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    //    NSLog(@"%@", sender);
        if ([segue.identifier isEqualToString:@"modalToNextVC"]) {
            //类型声明
            NSIndexPath *path = (NSIndexPath *)sender;
            NSLog(@"%@", path);
        }
    }
    
    #pragma mark-UITableViewDelegate
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
        //触发segue
        //sender 用来传值
        [self performSegueWithIdentifier:@"modalToNextVC" sender:indexPath];
    }
    
    #pragma mark-UITableViewDataSource
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        return 10;
    }
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        //使用 SB 创建UITableView/UICollectionView的时候, 如果需要用到Cell的话, 建议XIB创建, 不要往UITableView里面拖Cell
        MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cellID" forIndexPath:indexPath];
        return cell;
    }
    
    - (IBAction)back:(id)sender {
        [self dismissViewControllerAnimated:YES completion:nil];
    }
    @end

    在这里修改Cell内部的控件布局

    - (void)layoutSubviews {
        [super layoutSubviews];
    }

     效果图

     

     

     

  • 相关阅读:
    Math 和 Date
    GRID布局
    移动端项目布局类型
    媒体查询 + rem用法
    字符串
    ES5 中常见的数组常用方法
    数组的排序
    毕设制作:前端界面 2020-02-01
    阅读笔记十六——排序算法
    阅读笔记十五——阿里面试题
  • 原文地址:https://www.cnblogs.com/OrangesChen/p/5071187.html
Copyright © 2020-2023  润新知