首先来讲下闭包吧,其实闭包跟之前C中的block回调函数类似,但这里只研究了基础的使用,我在下面的两个VC中利用闭包做了通讯传值,也算是比较常用的方法吧,回头有时间我再研究下在项目中的其它应用

letsayHello={println("nihao")}sayHello()//定义一个闭包函数,与常规方法不同的是后面有个关键字in哦letadd={(a:Int,b:Int)->Intinreturna+b}//调用的时候其实跟调用方法一样哦println(add(1,2))//下面就是一个简单的例子,来找出数组中大于等于value的值,如果有,返回Yesvararray=[20,9,100,34,89,39]funchasClosureMatch(array:[Int],value:Int,closureValue:(num:Int,value:Int)->Bool)->Bool{foriteminarray{if(closureValue(num:item,value:value)){returntrue}}returnfalse}//Closure闭包varv1=hasClosureMatch(array,40){(num,value)->Boolinreturnnum>=value}println(v1)


然后是UI基础的代码,可以直接创建单一控制器的工程,主要是为了熟悉一下代码

这里我们可以先把storyboard关掉,直接改动appdelegate里面的方法

UI这里面就没有太多要讲的,主要是多查查相关的API,然后慢慢积累咯

funcapplication(application:UIApplication,didFinishLaunchingWithOptionslaunchOptions:[NSObject:AnyObject]?)->Bool{//Overridepointforcustomizationafterapplicationlaunch.self.window=UIWindow(frame:UIScreen.mainScreen().bounds)self.window!.backgroundColor=UIColor.whiteColor()self.window!.makeKeyAndVisible()//从语法上,我觉得跟O-C真的很不一样,但是道理是通的,如果你的O-C语言还算熟练,我想上手swift语言也是很轻松的letrootViewController=RootViewController()letnavigationController=UINavigationController(rootViewController:rootViewController)navigationController.tabBarItem=UITabBarItem(title:"第一页",p_w_picpath:nil,tag:1)letsecondViewController=SecondViewController()letsecondNavigationController=UINavigationController(rootViewController:secondViewController)secondNavigationController.tabBarItem=UITabBarItem(title:"第二页",p_w_picpath:nil,tag:2)letarray=[navigationController,secondNavigationController];lettabBarController=UITabBarController()tabBarController.viewControllers=arrayself.window!.rootViewController=tabBarControllerreturntrue}


接下来我们创建两个VC的类,Swift里面并没有所谓的指定类创建,而是在swift文件里,我们可以创建好多好多的类,当然了,为了更好的区分,我就单独创建类吧

这样我们在两个类里面单独创建一些基础的控件,然后再写一个协议来运用起来

主要还算来熟悉一下相关的语法

在下面的代码中也用到了Protocol以及Closure,方便小伙伴们上手哦

classRootViewController:UIViewController,ViewChangeDelegate{varclickCount:Int=0;varmyLabel:UILabel?overridefuncviewDidLoad(){super.viewDidLoad()self.title="炉石传说"letnextItem=UIBarButtonItem(title:"下一页",style:.Plain,target:self,action:"nextPage:")self.navigationItem.rightBarButtonItem=nextItemmyLabel=UILabel(frame:CGRect(x:0,y:100,width:320,height:44))myLabel!.text="小华,你好啊"myLabel!.backgroundColor=UIColor.redColor()self.view.addSubview(myLabel!)varmyButton=UIButton(frame:CGRect(x:100,y:200,width:100,height:44))myButton.backgroundColor=UIColor.blueColor()myButton.setTitle("点击",forState:.Normal)myButton.addTarget(self,action:"clickMe:",forControlEvents:.TouchUpInside)self.view.addSubview(myButton)}funcclickMe(sender:UIButton){clickCount+=1;println("click\(clickCount)")myLabel!.text="你猜我点了几次呢,\(clickCount)"}funcnextPage(sender:UIButton){letsecondViewController=SecondViewController()secondViewController.viewChangeDelegate=selfsecondViewController.changeTextForClosure("1",num:1){(value,num)->VoidinmyLabel?.text=value}self.navigationController?.pushViewController(secondViewController,animated:true)}funcchangeTitleToString(controller:UIViewController,value:String){myLabel!.text=value}

importFoundationimportUIKitclassSecondViewController:UIViewController{varviewChangeDelegate:ViewChangeDelegate?varclosure={(value:String,num:Int)->Voidin}overridefuncviewDidLoad(){super.viewDidLoad()self.title="第二页"self.view.backgroundColor=UIColor.grayColor()varbutton=UIButton.buttonWithType(.System)as!UIButtonbutton.frame=CGRect(x:100,y:100,width:100,height:40)button.setTitle("返回上一页",forState:.Normal)button.addTarget(self,action:"back:",forControlEvents:.TouchUpInside)self.view.addSubview(button)varbuttonChange=UIButton.buttonWithType(.System)as!UIButtonbuttonChange.frame=CGRect(x:100,y:200,width:100,height:40)buttonChange.setTitle("改变首页label值",forState:.Normal)buttonChange.addTarget(self,action:"change:",forControlEvents:.TouchUpInside)self.view.addSubview(buttonChange)}funcchangeTextForClosure(value:String,num:Int,closureValue:(value:String,num:Int)->Void){self.closure=closureValue}funcchange(sender:UIButton){if((viewChangeDelegate)!=nil){viewChangeDelegate?.changeTitleToString(self,value:"我变变变")}self.closure("你好",1)}funcback(sender:UIButton){self.navigationController?.popToRootViewControllerAnimated(true)}}protocolViewChangeDelegate:NSObjectProtocol{funcchangeTitleToString(controller:UIViewController,value:String)}



好啦,就先写这么多吧