zoukankan      html  css  js  c++  java
  • swift中的传值

      光阴似箭,日月如梭,转眼间学习的旅途已经过了一大半了,忘着自己所敲过的成批的代码,看着自己付出和努力,默默地为自己这几个月的奋斗感到欣慰,不论学习的路途再怎么的艰辛,但是自己还是坚持过来了,回想着以往的自己,似乎还从没有这么的坚持过,也没有这么的认真对待过,所以这么艰难的路自己都走过来了,后面的我相信一定是绚丽的明天和辉煌的未来,也许有些人说当个程序员真的好苦,但是我并不这么认为,因为这是我想做的,也是我所向往的,更是我所选择的道路,做“你”所想,实现我们共同的目标!!!!

      在这看似漫长而又短暂的一天里,我终于认识到了时间的宝贵,也认识了惜时的重要性,希望大家和我一样都要珍惜时间,把握身边的分分秒秒。今天我们主要学习了Swift中的传值问题,先是由前向后传值,再者是右后往前传值,当然方法也不止一种的啦,下面我就为大家简单地介绍下在传值中我们经常遇到的其中一种方法吧,望大家有所收获的同时多提意见哈:

      一、Storyboard搭建UI界面步骤详解

      其中关于创建工程的步骤在这里就不多提了,因为在前面已经说过了,当然了不懂的可以再问哦,下面简单说下传值的基本流程:

      1.可是话步骤:

      箭头所指方向就是故事本也就是storyboard,接下来就要拖控件,进行UI界面的搭建了

      先将原本带有的Controller给删除了,然后再重现拖上去一个NavigationController,当然了,这个控件是可以进行搜索的,下面为大家指出搜索的具体位置

      当然在刚拖进去的时候尺寸会大的有点受不了,不过我们还是有针对方案的,下面为大家指出

      首先我们需要先选中我们拖上去的控件然后选中红色圈圈圈出的选项,接下来我们就可以看到矩形框圈出的区域了,我们点击它后,会弹出箭头所指的提示框,我们选择箭头所指的选项就可以实现我们的需求了。

      接下来的步骤类似于上面所说的就是单纯的拖控件了,至于大小就不用管了,因为我们在刚开始的时候已经调好了,控件拖好后的效果是这样的,如下图:

      至于那个箭头可能还是有些人不知道的把,这个我们需要在另外一个选项中调,让第一个视图作为我们的根视图控制器,如图所示:

      这样简单地UI界面就基本完成了

      二、代码实现具体的传值过程

      首先我们需要建几个类让我们所托控件根据实现需求分别继承,其次然后我们需要自己键model层,来进行数据管理,下面为大家附上传值的具体代码,可能不够详细,有不足还请指出。

    class AddressBookTableViewController: UITableViewController {
        
        var arry = [AddressBook]()
        
        func getData(ntf: NSNotification) {
            self.arry.append(ntf.object as AddressBook)
            
        }
        
        override func viewDidLoad() {
            super.viewDidLoad()
            
            NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("getData:"), name: "aaa", object: nil)
     var model : AddressBook = AddressBook()
            var dic = Dictionary<String, String>()
            
            dic["name"] = nameTextFiled.text
            dic["sex"] = SexTextField.text
            dic["phoneNumber"] = PhoneTextField.text
            
            model.setValuesForKeysWithDictionary(dic)
            
            NSNotificationCenter.defaultCenter().postNotificationName("aaa", object: model, userInfo: dic)
    //        self.delegate!.addInfo(model)
            
            var alt = UIAlertView(title: "添加成功", message: "已经将name:(nameTextFiled.text) sex:(SexTextField.text), phoneNumber:(PhoneTextField.text)插入", delegate: self, cancelButtonTitle: "OK")
            alt.show()

      这是一种从后往前的传值方法,也就是类似于通讯录添加联系人的方法。

      下面再为大家介绍从前往后传至的方法,也就是通讯录中点击联系人跳转至详情页的实现。

     var arry = [AddressBook]()
            var model1 : AddressBook = AddressBook()
            
            var dic = Dictionary<String, String>()
            dic["name"] = "乔明"
            dic["sex"] = "不明"
            dic["phoneNumber"] = "110"
        
            model1.setValuesForKeysWithDictionary(dic)
            self.arry.append(model1)
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
            // Get the new view controller using [segue destinationViewController].
            // Pass the selected object to the new view controller.
            if sender is UITableViewCell {
            var cell = sender as UITableViewCell
            var indexPath = tableView.indexPathForCell(cell)
            var model = self.arry[indexPath!.row]
            var vc = segue.destinationViewController as ViewController
            vc.delegate = self
            vc.info = model
            } else {
                var vc = segue.destinationViewController as ViewController
                vc.delegate = self
            }
        }
        func addInfo(info: AddressBook) {
            self.arry.append(info)
        }

      当然了,这个前提是要遵循代理,然后实现代理中的方法,具体的创建代理和代理方法我在下面为大家补充上。

             

      这就是两种简单地传值方法,希望可以帮助大家更快的学习Swift语言,如果有什么不懂的尽管想我提出,有问必答哦,哈哈。

      好了今天就写到这里了,要开始复习今天的知识点了,good good study, day day up!  哈哈,好好学习哦博友们,我们一起进步啦,加油加油!

  • 相关阅读:
    天融信防火墙抓包
    windows2019jihuo
    CentOS多路径软件配置(光纤连接存储)
    listener.ora,tnsnames.ora中一个空格的威力
    excel 金额自动转中文大写
    js的点滴
    写ppt的助手
    珠峰-6-koa-express
    珠峰-6-http和http-server原理
    珠峰-6-node
  • 原文地址:https://www.cnblogs.com/dyx-wx/p/4275878.html
Copyright © 2011-2022 走看看