swift(四)

来源:互联网 发布:女孩做网络销售的多吗 编辑:程序博客网 时间:2024/06/06 02:20

今天用swift写了个tableView,用闭包实现了反向传值 。。。感觉现在语法掌握多了。。可以写点东西了。


class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate{


let cellIdentify = "cell1"

    

    var mainTableView =UITableView()

    

    var dataArray = [Int]()

    

    overridefunc viewDidLoad() {

        super.viewDidLoad()

        

        self.mainTableView =UITableView(frame: CGRectMake(0,0, UIScreen.mainScreen().bounds.size.width,UIScreen.mainScreen().bounds.size.height), style: UITableViewStyle.Plain)

        mainTableView.delegate =self

        mainTableView.dataSource =self

        mainTableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: cellIdentify)

        

        self.view.addSubview(mainTableView)

        

        dataArray.append(10)

        

       

        // Do any additional setup after loading the view, typically from a nib.

    }


    func tableView(tableView:UITableView, numberOfRowsInSection section:Int) -> Int {

        returndataArray.count

    }

    

    func tableView(tableView:UITableView, cellForRowAtIndexPath indexPath:NSIndexPath) -> UITableViewCell {

        

        let cell1 = tableView.dequeueReusableCellWithIdentifier(cellIdentify, forIndexPath: indexPath)

        cell1.textLabel?.text ="\(indexPath.row)"

        return cell1

    }

    

    func tableView(tableView:UITableView, didSelectRowAtIndexPath indexPath:NSIndexPath) {

        

        let twoViewController1 =twoViewController()

        self .presentViewController(twoViewController1, animated:true) { () ->Void in

            

        }

    }

    

    //闭包最全定义

    var str = {

       

        (str1:String,str2:String) ->Stringin

     

        return str1+str2

    }("a","b")

    

    //省略闭包返回值但是要显示生命变量类型

    var string:String = {

        

        str1,str2 in

        return str1+str2

    }("c","D")

    

    overridefunc didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }



下面这两个使用闭包反向传值

class twoViewController: UIViewController {


    var titleLabel:UILabel?

    

    func oneClosure(str1:String) ->Void {

        

        self.titleLabel?.text = str1

    }

    

    overridefunc viewDidLoad() {

        

        self.view.backgroundColor =UIColor.redColor()

        

        let nextButton =UIButton(type: UIButtonType.System)

        nextButton.setTitle("下一页", forState:UIControlState.Normal)

        nextButton.frame =CGRectMake(100,100, 100,40)

        nextButton.addTarget(self, action:"nextStep", forControlEvents:UIControlEvents.TouchUpInside)

        nextButton.backgroundColor =UIColor.whiteColor()

        self.view .addSubview(nextButton)

        

        self.titleLabel =UILabel(frame: CGRectMake(100,200, 100,40))

        self.titleLabel?.text ="现在是第一页"

        self.titleLabel?.backgroundColor =UIColor.greenColor()

        self.view.addSubview(self.titleLabel!)

        

        

    }

    

    func nextStep() {

        

        let threeView =ThreeViewController()

        threeView.closure =oneClosure

     //   threeView.sendValue(oneClosure)

        

        self.presentViewController(threeView, animated:true) { () -> Voidin

            

        }

    }




//typealias  重命名


//泛型无法重命名(要保证泛型的确定)

//class person<T> {}


typealias Cloure = String->()


class ThreeViewController:UIViewController {


    overridefunc viewDidLoad() {

        self.view.backgroundColor =UIColor.yellowColor()

    }

    

    var closure:Cloure?

    

    

    func sendValue(Clo:Cloure) {

        

        closure = Clo

    }

    

    overridefunc touchesBegan(touches: Set<UITouch>, withEvent event:UIEvent?) {

        

        self.closure!("~变了")

        

        self.dismissViewControllerAnimated(true) { () ->Void in

            

        }

    }

    

    

//    var closure:Cloure?

//    

//    func sendValue(clo: Cloure) {

//        self.closure = clo

//    }

//    

//    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

//        

//       self.dismissViewControllerAnimated( true) { () -> Void in

//        

//        }

//    }

//    

//

//    override func viewWillDisappear(animated: Bool) {

//        self.closure?(10)

//    }

//    

//    deinit {

//        print("内存释放")

//    }

//    typealias workId = String

//    typealias worker = person<workId> 

    //要保证泛型的确定性才可以重命名这个泛型


0 0