iOS开发——完整项目实战Swift篇&百思不得姐Swift版总结(三)

一:闭包(闭包)
比如我们在OC需要在View定定义一个block,然后在对应的控制器里面使用block保存对应的砝码快,然后返回这里执行,那在OC是类似的,只是名称不同语法有那么一点区别而已
 
首先在View中声明一个闭包别名,根据我们需要传递的参数
/// 闭包的声明
typealias iCocosClosure = (string: String) ->Void 
然后声明一个闭包属性,并且实现初始化方法
    var iCocosBlock: iCocosClosure?
    //将函数指针赋值给myClosure闭包,该闭包中涵盖了someFunctionThatTakesAClosure函数中的局部变量等的引用
    func initWithClosure(closure: iCocosClosure?) {
        iCocosBlock = closure
    }
最后在摇执行的方法里面判断就并且执行就可以
        //判空
        if (iCocosBlock != nil){
            //闭包隐式调用someFunctionThatTakesAClosure函数:回调。
            iCocosBlock!(string: "name")
        }
 
这个时候控制器里面就很简单了,只需要传入对应的代码保存到闭包里面
        textField.initWithClosure { (string) -> Void in
            if (self.textField?.text.isEmpty != nil) {
                return;
            }
            self.tagButtons.removeLast()
        }

 

二:代理
首先定义一个代理协议,和对应的代理方法
//协议,定义代理要实现的方法
protocol iCocosViewControlDelegate{
    func changeLabel(newString:String)
}

定义一个Delegate对象

var delegate:iCocosViewControlDelegate?

判断是否遵守这个代理协议,遵守则执行代理方法

ifdelegate) {     
    delegate?.changeLabel("iCocos")
}

在接受代理的控制器或者View中实现下面的代理

设置代理
vc.delegate = self

遵守协议iCocosViewControlDelegate

 

在对应的控制器中遵守协议iCocosViewControlDelegate,实现代理方法
实现代理方法

    func changeLabel(newString:String) {
     实现大礼方法的代理
这里主意参数的传递
}
三:通知,跟OC几乎一样
 
添加一个通知,并且实现同步方法
  •         NSNotificationCenter.defaultCenter().addObserver(self, selector: "Notification", name: "iCocos", object: self)
    func Notification() {
        print("")
    }
 

 

在对应的控制器发布通知
  •         NSNotificationCenter.defaultCenter().postNotificationName("iCocos", object: self, userInfo: nil)
 
 
 
四:segue实现控制器跳转
复制代码
1 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
2  
3  if segue.identifier == "showDetail"  { 
4 destinationController.navigationItem.title = "摇到的菜"
5    destinationController.tempCaipin = self.showArray //传值   
6 } 
7 }  
复制代码
 
五:NSUserDefaults(不过这个用的比较多的是数据持久化,这里严格来说不能算传值)

复制代码
 1     func cacheSetString(key: String,value: String){
 2         var userInfo = NSUserDefaults()
 3         userInfo.setValue(value, forKey: key)
 4     }
 5     
 6     func cacheGetString(key: String) -> String{
 7         var userInfo = NSUserDefaults()
 8         var tmpSign = userInfo.stringForKey(key)
 9         return tmpSign!
10     }
复制代码

 

 


经典错误
 
一:可选类型错误


  •         tipBtn.setTitle("添加表情:\(self.textField?.text)", forState: UIControlState.Normal)
解决办法
  •         tipBtn.setTitle("添加表情:\(self.textField!.text)", forState: UIControlState.Normal)

 
 
二:可选链
 
提示插入


 
插入子后��提示删除

 
 
这个时候只需使用显示就可以


 
 

版权声明:欢迎转载,请贴上源地址: http://www.cnblogs.com/iCocos/(iOS梦工厂)

更多精彩请关注github:https://github.com/al1020119?tab=repositories

 
 
 
本博文由博主(iCocos)独立编写或者借鉴别人的好文章进行修改而成,如果不对的地方望指正,谢谢! 笔者所有相关博客已转至git博文:http://al1020119.github.io/此博文不会再更新,也很少会回复,如有疑问请联系我!Q Q:2211523682/790806573微信:18370997821/13148454507微博WB:http://weibo.com/u/3288975567?is_hot=1git博文:http://al1020119.github.io/github:https://github.com/al1020119
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值