Fork me on https://github.com

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];
}

 效果图

 

 

 

posted @ 2015-12-23 20:36  OrangesChen  阅读(533)  评论(0编辑  收藏  举报