现有a、b两个页面,a页面中有两个按钮到可以跳转到b页,不同按钮点入后b页的输入框显示内容不同,b页面还要实现输入框文字回传

实际场景:

我有个打卡用的考勤页面和填写迟到或早退理由的备注页面,在考勤页面,点击“迟到理由”按钮,进入备注填写页面,输入框默认文字是“我昨晚加班了,所以今天上班晚了”,修改完理由后,回退到考勤页面,修改后迟到理由会显示到打卡按钮旁边;同时还有个早退理由按钮,处理过程类似。

在storyboa里segue是这样的:


首先看考勤页面(主页面)如何给备注页面(目标页面)传参:

在考勤页面(主页面)的viewcontroller中找到prepareForSegue方法,这个方法由xcode自动生成,用于在使用segue跳转前,做一些处理动作:

    //记录通过点击哪个按钮进入的备注页面
    var backToButtonInd:Int=1
    override func prepareForSegue(segue: UIStoryboardSegue,sender: AnyObject?) {
  
         print("KaoqinTableViewController \( segue.identifier!)")
         let destinationController = segue.destinationViewController as! UINavigationController
        let nextview:AddCommentViewController = destinationController.childViewControllers[0] as! AddCommentViewController
      
        if(segue.identifier=="onworkReasion"){
             nextview.tempText="我昨晚加班了,所以今天上班晚了"
             backToButtonInd=1
        }else if(segue.identifier=="offworkReasion"){
             nextview.tempText="我一会要去拜访客户,所以先走了"
             backToButtonInd=2
        }
    }


实际上是通过修改segue的目标页面的某个类属性,从而达到传参的目的。

下面是备注页面(目标页面)如何回传参数:

在备注页面(目标页面)使用回调函数来传参,考勤页面把一个回调函数赋值给备注页面的一个函数类型的类属性,然后点击提交按钮后,提交方法中调用该回调函数:

在考勤页面(主页面)的viewcontroller中增加函数commComplet,并在prepareForSegue中给增加一行代码

   //备注页面回传传参
    func commComplet(theData:String){
        print("commComplet接收回传数据")
        if(backToButtonInd==1){
            self.lateReasonLabel.text=theData
        }else{
            self.ofWorkReasonLabel.text=theData
        }
        
    }
    //记录通过点击哪个按钮进入的备注页面
    var backToButtonInd:Int=1
    override func prepareForSegue(segue: UIStoryboardSegue,sender: AnyObject?) {
  
         print("KaoqinTableViewController \( segue.identifier!)")
         let destinationController = segue.destinationViewController as! UINavigationController
        let nextview:AddCommentViewController = destinationController.childViewControllers[0] as! AddCommentViewController 
       //备注页面的回调函数
        nextview.myClosure=commComplet
        if(segue.identifier=="onworkReasion"){
             nextview.tempText="我昨晚加班了,所以今天上班晚了"
             backToButtonInd=1
        }else if(segue.identifier=="offworkReasion"){
             nextview.tempText="我一会要去拜访客户,所以先走了"
             backToButtonInd=2
        }
    }

在备注页面viewcontrollor中:

import UIKit
//回调函数
typealias sendValueClosure=(string:String)->Void

class AddCommentViewController:UIViewController,UITextFieldDelegate {
     
    @IBOutlet weak var beizhuTextView: UITextField!
    //正向传值
    var tempText:String="填写备注"
    //回调考勤页面的方法
    var myClosure:sendValueClosure?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //当页面初始化后,设置输入框默认值 接收考勤页面的正向传值
        beizhuTextView.text=tempText

    }
    @IBAction func addComment(sender: AnyObject) {
        self.beizhuTextView.resignFirstResponder()
        self.dismissViewControllerAnimated(true ){
         if let cellcount=self.beizhuTextView.text {
                 //回调函数 实现反向传值
                  self.myClosure!(string:cellcount )
         }
        self.dismissViewControllerAnimated(true,completion:  {
            self.beizhuTextView.resignFirstResponder()
        })
    }
}

swift开发笔记9 - 正向和反向页面传参的更多相关文章

  1. 详解使用postMessage解决iframe跨域通信问题

    这篇文章主要介绍了详解使用postMessage解决iframe跨域通信问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  2. swift开发笔记9 - 正向和反向页面传参

    在storyboa里segue是这样的:首先看考勤页面(主页面)如何给备注页面传参:在考勤页面(主页面)的viewcontroller中找到prepareForSegue方法,这个方法由xcode自动生成,用于在使用segue跳转前,做一些处理动作:实际上是通过修改segue的目标页面的某个类属性,从而达到传参的目的。

  3. [快速学会Swift第三方库] Kingfisher篇

    [快速学会Swift第三方库]Kingfisher篇Kingfisher是一个轻量的下载和缓存网络图片库。也可以利用kf_setimageWithURL函数的返回值来进行更多的管理操作下载器自定义下载器参数缓存系统自定义缓存参数预取将一些图片在显示到屏幕上之前,先预取到缓存。动态图片加载动态图片只需要加上一行代码,设置imageView为AnimatedImageView,不设置也能加载,但是在动态图片较大的时候推荐进行该设置。深入学习这里列出了Kingfisher大多数操作,如果想要深入学习Kingfi

  4. swift - 回调

    回调函数B不由该函数的实现方A直接调用,而是在特定的事件或条件发生时由另外的一方C调用,用于对该事件或条件进行响应。在swift中有同步和异步两种形式的回调函数:同步回调函数异回调函数步C调用方法B,B可以是函数或者closureC调用函数B并使B在另一线程上运行B返回之前C处理block状态B和C运行在不同的线程,不会互相block。

  5. 6.3 Swift闭包表达式作为回调函数

    /**闭包表达式作为回调函数*//**上节课中呢,说了闭包表达式的语法,将闭包表达式赋给一个常量并不常用,那种调用方式还不如就写成函数的形式*/vararray=[20,2,3,70,8]showArrayprintbubbleSortletintCmp={->Intin//可以修改闭包表达式//letx=a%10//lety=b%10ifa>b{return-1}elseifaIntin//可以修改闭包表达式letx=a%10lety=b%10ifx>y{return-1}elseifxVoid{for

  6. [译] Alamofire Tutorial: Getting Started

    Alamofire提供了链式的request/response方法,JSON的传参和响应序列化,身份认证和其他特性。Alamofire的优雅之处在于它完完全全是由Swift写成的,并且没有从它的Objective-C版本-AFNetworking那继承任何特性。该token将会被包含在每个发往Imagga的请求的头部。Apple提供JSONSerialization类来帮助将内存中的对象转换为JSON,反之亦然。Alamofire有几个主要功能:.upload:以multipart,流,文件或数据方法上传

  7. 如何在Swift中传递回调函数

    我看过例子,这应该是我想的.我的类的定义是不正确的,因为我传递回调的方式吗?

  8. Android Facebook登录中不会调用回调函数

    解决方法你忘了把监听器放在onActivityResult()中将以下代码放在onActivityResult活动方法中:

  9. HTML5本地存储和本地数据库实例详解

    这篇文章主要介绍了HTML5本地存储和本地数据库实例详解,需要的朋友可以参考下

  10. 浅谈javascript回调函数

    回调函数是从一个叫函数式编程的编程范式中衍生出来的概念。简单来说,函数式编程就是使用函数作为变量。函数式编程过去 - 甚至是现在,依旧没有被广泛使用 - 它过去常被看做是那些受过特许训练的,大师级别的程序员的秘传技巧。

随机推荐

  1. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  2. swift UISlider,UIStepper

    我们用两个label来显示slider和stepper的值.再用张图片来显示改变stepper值的效果.首先,这三个控件需要全局变量声明如下然后,我们对所有的控件做个简单的布局:最后,当slider的值改变时,我们用一个label来显示值的变化,同样,用另一个label来显示stepper值的变化,并改变图片的大小:实现效果如下:

  3. preferredFontForTextStyle字体设置之更改

    即:

  4. Swift没有异常处理,遇到功能性错误怎么办?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 字典实战和UIKit初探

    ios中数组和字典的应用Applicationschedule类别子项类别名称优先级数据包contactsentertainment接触UIKit学习用Swift调用CocoaTouchimportUIKitletcolors=[]varbackView=UIView(frame:CGRectMake(0.0,0.0,320.0,CGFloat(colors.count*50)))backView

  6. swift语言IOS8开发战记21 Core Data2

    上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。

  7. swift语言IOS8开发战记22 Core Data3

    上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc,不然后面会报错,我也不知道为什么。

  8. swift实战小程序1天气预报

    在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。然后在btnpressed方法中依旧增加loadWeather方法.在loadWeather方法中加上信息的显示语句:运行一下看看效果,如图:虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。

  9. 【iOS学习01】swift ? and !  的学习

    如果不初始化就会报错。

  10. swift语言IOS8开发战记23 Core Data4

    接着我们需要把我们的Rest类变成一个被coredata管理的类,点开Rest类,作如下修改:关键字@NSManaged的作用是与实体中对应的属性通信,BinaryData对应的类型是NSData,CoreData没有布尔属性,只能用0和1来区分。进行如下操作,输入类名:建立好之后因为我们之前写的代码有些地方并不适用于coredata,所以编译器会报错,现在来一一解决。

返回
顶部