当我们在一个控制视图上,在UITextField输入文字信息之后,希望可以使用键盘的Done触发一个 Done的UIButton,但是刚开始我直接在

-(BOOL)textFieldShouldReturn:(UITextField *)textField 内调用按键的行为: - (IBAction)DonePhotoButton:(UIButton *)sender {

//代码 } 虽然可以执行到{}内的代码,但是不会触发按键按下之后一个Unwind Segue(解散当前视图,退回上一个视图,并完全一个方法),也就是说没有触发退回上一个视图然后再执行一个AddPhoto:方法,寻思着,为什么没有触发Unwind Segue,于是仔细查看最终找到了解决办法。

IPhone 上的视图:                        

在Storyboard里的unwind Segue:

我这里的代码是使用

[self performSegueWithIdentifier:kUNWIND_ID sender:nil];

强制执行一个带Identifier的Segue,并且判断是否符合要求,实验证明这是可行的

执行的代码:

- (IBAction)DonePhotoButton:(UIButton *)sender {
}//按键事件 #pragma mark - prepareForSegue
//prepare
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString:kUNWIND_ID]) {
NSManagedObjectContext * context = self.photographyerTakingPhoto.managedObjectContext;
if (context) {
Photo * photo = [NSEntityDescription insertNewObjectForEntityForName:@"Photo" inManagedObjectContext:context];
photo.title = self.TextFieldTitle.text;
photo.subtitle = self.TextFieldSubTitle.text;
photo.whoTook = self.photographyerTakingPhoto;
photo.latitude = [NSNumber numberWithDouble:self.location.coordinate.latitude];
photo.longitude = [NSNumber numberWithDouble:self.location.coordinate.longitude];
photo.imageURL = [self.imageURL absoluteString];
photo.thumbnailURL = [self.thumnailURL absoluteString];
self.photo = photo;
}
}
}
//判断identifer 决定是否执行prepareForSegue 同时给出警告
-(BOOL) shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender{
if ([identifier isEqualToString:kUNWIND_ID]) {
if (!self.image) {
[self alert:@"No Photo taken!"];
return NO;
}else if(![self.TextFieldTitle.text length] || ![self.TextFieldSubTitle.text length]){
[self.TextFieldTitle.text length] ? [self alert:@"SubTitle required!"] :
[self.TextFieldSubTitle.text length] ? [self alert:@"Title required!"] : [self alert:@"Title and SubTitle required"] ;
return NO;
}else{
return YES;
}
}else{
return [super shouldPerformSegueWithIdentifier:identifier sender:sender];
}
} //----------------------------------------------------------------//
//点击键盘的return取消键盘
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
[textField resignFirstResponder];
BOOL CanSegue = [self shouldPerform:kUNWIND_ID];
if (CanSegue)
[self performSegueWithIdentifier:kUNWIND_ID sender:nil]; return YES;
} -(BOOL) shouldPerform:(NSString *)identifier {
if ([identifier isEqualToString:kUNWIND_ID]) {
if (!self.image) {
[self alert:@"No Photo taken!"];
return NO;
}else if(![self.TextFieldTitle.text length] || ![self.TextFieldSubTitle.text length]){
[self.TextFieldTitle.text length] ? [self alert:@"SubTitle required!"] :
[self.TextFieldSubTitle.text length] ? [self alert:@"Title required!"] : [self alert:@"Title and SubTitle required"] ;
return NO;
}else{
return YES;
}
}else{
return NO;
} }

关于如何使用代码触发 UIButton的Unwind Segue的更多相关文章

  1. 数据逆向传递 unwind segue

    一.简介 unwind segue通过允许你定义一个控制器和其他控制器的关系来扩展segue的概念,这个“关系”先于顺传(流式控制)的方式.基于unwind segue可以实现导航相反的效果,即将界面 ...

  2. 用代码触发testng实现并发测试

    有时候希望测试用例能用代码触发,发现testng支持这种操作,于是记录一下: 首先添加testng依赖: <dependency> <groupId>org.testng< ...

  3. Jenkins教程(七)实现 GitLab 提交/合并代码触发构建

    楔子 最近公司推行统一构建平台(基于 Jenkins + Kubernetes 插件创建 slave),原来部门自建的 Jenkins 不让用了. 迁移上统一构建平台的最大阻力是前端模块发布的问题: ...

  4. iOS9 Storyboard unwind segue反回传递事件时机详细步骤

    当返回上一个界面且需要上一个界面做某事时,用unwind segue实现起来比delegate简单许多,甚至有时不适合用delegate来实现,那么我们就用unwind segue吧,而且像1-> ...

  5. 适配 iOS 8 时遇到的问题两则:远程推送和 Unwind Segue

    原文:http://imtx.me/archives/1910.html 昨天我在微博上吐槽:iOS 8 / Xcode 6 真是史上对开发人员最糟糕的版本号了.收到非常多朋友表达同感. 之所以这么说 ...

  6. UnWind Segue

    iOS 6 和 Xcode 4.5 中添加了一个新特性叫做“Unwind Segue”. 使用Unwind Segue,可以方便的在Navigation Controller的Controllers之 ...

  7. 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记38 Unwind Segue反向过渡

    之前我们接触过了segue,这是IOS中最主要的传递方式,今天来解说一下怎样进行反向的segue. 反向过渡的使用前提是发出过渡的MVC必须是由目标MVC直接或者间接正向过渡来的.反向过渡是唯一不会创 ...

  8. iOS开发使用Unwind Segue进行返回

    我们在之前的一篇博客中谈到怎样使用dismissViewControllerAnimation()的方法在iOS中返回,如今我们有一个更为方便的方法来实现界面跳转之后的返回操作.使用的是Unwind ...

  9. 跳出手掌心--如何立即触发UIButton边界事件

    http://www.cocoachina.com/ios/20150611/12082.html 最近在使用UIButton的过程中遇到一个问题,我想要获得手指拖动button并离开button边界 ...

随机推荐

  1. webapi中使用token验证(JWT验证)

    本文介绍如何在webapi中使用JWT验证 准备 安装JWT安装包 System.IdentityModel.Tokens.Jwt 你的前端api登录请求的方法,参考 axios.get(" ...

  2. 2016.9.9《Oracle查询优化改写技巧与案例》电子工业出版社一书中的技巧

    1.coalesce (c1,c2,c3,c4,...) 类似于nvl但可以从多个表达式中返回第一个不是null的值 2.要在where条件中引用列的别名,可以再嵌套一层查询 select * fro ...

  3. HOOK技术演示

    前提:64位系统需要用64位编译dll 一.首先创建一个dll工程,取名为KeyboardHookDll,代码如下: // KeyboardHookDll.cpp : 定义 DLL 应用程序的导出函数 ...

  4. 初识python notes

    python数据类型 数字 字符串 列表 元祖 字典 1.为什么要编程 编程的目的是解放人力,这就需要人通过编写程序的方式计算机代替人去自动干活 2.什么是编程语言 编程语言就是人与计算机之间沟通的介 ...

  5. Oracle——判断对象是否存在(未完工)

    一.系统表: 1.User_Tables:存储用户下的所有表的信息: 2.dba_tables:存储管理员权限下的所有表的信息: 3.all_tables:存储所有表的信息. 4.all_Tab_Co ...

  6. Struts1使用技巧

    转自:https://blog.csdn.net/chjttony/article/details/6099101 1.Struts1是Apache推出的java web开发领域一个比较早,同时也是使 ...

  7. ORACLE体系结构一 (逻辑结构)-表空间、段、区和数据块

    一.Oracle的逻辑结构 Oracle的逻辑结构是一种层次结构.主要由:表空间.段.区和数据块等概念组成.逻辑结构是面向用户的,用户使用Oracle开发应用程序使用的就是逻辑结构.数据库存储层次结构 ...

  8. 保研机试训练[bailianoj]

    site:http://bailian.openjudge.cn/xly2018/ 1.计算任意两天之间的天数 思路:以0为起始点计算天数,然后相减即可.这样的编码复杂度会减少很多. #include ...

  9. CentOS7:ifconfig command not found解决和netstat -an

    没有 ifconfig 和netstat -an 的话安装 net-tools package yum install net-tools

  10. Android 菜单 之 上下文菜单ContextMenu

    所谓上下文菜单就是当我们长按某一个文件时弹出的菜单 操作这个菜单我们要重写onCreateContextMenu()方法 如上一篇文章一样,对于这个菜单中选型的操作也有动态添加和xml文件添加两种方法 ...