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

 效果图

 

时间: 2024-10-01 22:57:40

StoryBoard中segue的使用的相关文章

Storyboard中segue使用总结

简介         场景转换在应用中是非常常见的,让用户在一个视图控制器内操作,能够实例化并显示另一个视图控制器,需要创建一个在两者之间相连的segue(转 场).比如导航控制器里面,某个场景中的操作可以触发转场去加载并显示另一个场景,转场可以将下一个控制器自动推入导航栈. 说明         Xcode6之前Storyboard里面的几种segue区别及视图切换:push.modal.popover.replace和custom可参考:http://www.2cto.com/kf/2012

storyboard中Unwind segue使用

Unwind segue能被用作导航控制器中的回退,可以有push,modal,和popover三种效果.(效果和直接使用导航控制器的效果相同,不过更加强大). 假设情况A是导航控制器的根控制器,而跟控制器之下有另外的一个B控制器,B之下还有一个C控制器,层次还可以更加的深,从最深层次的控制器回到A 使用Unwind segue可以直接到达,并且只需要在A中创建一个方法类似下面的代码: ? 1 2 3 - (IBAction)unwindToThisViewController:(UIStory

[iOS基础控件 - 6.11.4] storyboard 的 Segue

A.概念 storyboard中的跳转事件连线,都是一个UIStoryboardSegue对象(Segue) 来源控制器 触发控制器 目标控制器 跳转到的控制器 Segue的属性: 每一个Segue对象,都有3个属性唯一标识@property (nonatomic, readonly) NSString *identifier;来源控制器@property (nonatomic, readonly) id sourceViewController;目标控制器 @property (nonatom

//四舍五入//得到倒序//比较字符串//拦截时间,实现超时锁屏//判断是否越狱//配置PodFile//Storyboard中跳转操作//处理不可逆的push界面操作

//处理不可逆的push界面操作 VerifyRealNameViewController *verifyRealNameCtrl = [VerifyRealNameViewController viewControllerWithStoryBoard:@"Registe" identify:@"VerifyRealNameViewController"]; UIViewController *topCtrl = [self.navigationController

用代码创建并实例化在storyboard中声明的ViewController

我们的项目最早是基于storyboard开发的,所以一开始所有的ViewController都通过storyboard创建,并通过segue连接跳转 但是今天其中一个controller的view,我们需要特别美化一下,用storyboard做很麻烦.所以就把它从storyboard里拿出来了.问题是,原来的segue就不能用了,需要用编码的方式来实现涉及到此controller的跳转 跳转进此controller的代码很常规,之前做模态页面开发的时候已经试过了,所以很简单就写出来: [objc

对比 Android 的 Intent 与 iOS StoryBoard 的 Segue - Intent 如果也能增加个prepareForSegue回调就好了

对比 Android 的 Intent 与 iOS StoryBoard 的 Segue - Intent 如果也能增加个prepareForSegue回调就好了 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再

xib或storyBoard中往scrollView添加子控件

如何在xib或者storyBoard中的scrollView加拖拽子控件,并且能让它可以正常滚动,那么下面就为大家简单演示: 运行环境为:Xcode 7.3 备注:图片较大,如果看不清看可以右键鼠标在新标签中打开图片就很清晰了 1.如图我们往storyBoard拖拽一个scrollView并设置为上下左右约束距离父控件为0 2.当我们往scrollView中添加子控件时候却发现报错了 因为scrollView比较特殊,需要设置contentSize,这个错误和平常我们遇到的错误不一样,因为在这两

iOS中 xib自定义View在storyboard中的使用

1,创建UIView 的SubClass 命名为MyView 2, new一个名为MyView的xib p1 3,配置xib的属性 p2 4,为View 添加背景色,添加一个按钮并定制按钮约束,这里我添加的约束为垂直居中,Button与View等宽,Button左边起点位置为0. p3 5,设置xib中的File’s owner = MyView, 拖拽view 到关联的代码中命名为contentView p4 6, 在storyboard 中对ViewController 添加一个View,之

iOS开发手记 - iOS9.3 UINavigationController添加后不显示storyboard中viewcontroller里的控件的解决方法

我原先是这么做的,通常也是这么做 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. ViewController *firstVC = [[ViewController alloc] init]; UIN