Swift从零开始学习_07(UI界面实践中学习Swift)

     昨天试了下写代码后感觉写比只是看好很多, 所以今天就又写了一点东西, 主要是类的属性、以及继承和xib等一些知识, 也遇到了很多麻烦, 不过好在都已经解决了, 这里简单写一下今天的代码, 有什么不对的地方了, 还是希望提出来.

      先看一下做的第一个简单的页面:点击第二个按钮, 下面的视图变化颜色, 点击第一个按钮, 模态一个页面

 

     首先是我们之前写OC代码时候在.h里面声明的一些属性, 在Swift怎么声明呢?,方法如下:

 var array:NSMutableArray = NSMutableArray() //直接初始化好的数组, 至于懒加载的方法, 暂时我还不会, 还在研究.
    var button:UIButton! //这里用于声明属性, 这里叹号的意思, 个人理解是, 需要是UIButton或者他的子类的实例对象
    var button1:UIButton!
    var view1:UIView!

我们怎么用这些属性呢?请往下看.

override func viewDidLoad() {//override 是重写父类方法的意思
        super.viewDidLoad()
        
        self.view.backgroundColor = UIColor.grayColor()
        
        //这里属性并不用使用self.或者_来调, 直接可以写的, 跟之前OC中的实例变量是一样的.
        button = UIButton.buttonWithType(UIButtonType.System) as UIButton
        button.frame = CGRect(x: 100, y: 100, width: 150, height: 40)
        button.backgroundColor = UIColor.whiteColor()
        button.setTitle("跳转到下一个页面", forState: UIControlState.Normal)
        button.addTarget(self, action: "presetnVC", forControlEvents: UIControlEvents.TouchUpInside) //这里给button添加方法的时候, action的写法也是醉了, 上午一直用的是Selector(logTest()), 一直有问题,下午这样竟然行了, 总感觉用selector才更科学啊.
        self.view .addSubview(button)
        
        button1 = UIButton.buttonWithType(UIButtonType.System) as UIButton
        button1.frame = CGRect(x: 100, y: 200, width: 150, height: 40)
        button1.backgroundColor = UIColor.whiteColor()
        button1.setTitle("随机改变颜色", forState: UIControlState.Normal)
        button1.addTarget(self, action: "ChangeColor", forControlEvents: UIControlEvents.TouchUpInside)
        self.view .addSubview(button1)
        
        self.array .addObject("test")
        println(self.array)
        
        view1 = UIView()
        view1.frame = CGRect(x: 80, y: 300, width: 200, height: 200)
        view1.backgroundColor = UIColor.blueColor()
        self.view .addSubview(view1)
        
    }

至于Btn方法的实现, 我这里直接贴代码了.

func ChangeColor(){ //产生随机色, 并改变view的颜色
        //这里不得不说Swift中的这个随机数, 开始用oc的写法, 一直报错, 说是UInt32怎么的, Swift太矫情了
        view1.backgroundColor = UIColor(red: CGFloat(rand()%255) / 255.0, green: CGFloat(rand()%255) / 255.0, blue: CGFloat(rand()%255) / 255.0, alpha: 1.0)
    }
func presetnVC(){
        
        //这里从nib中加载试图控制器, 也是会遇到问题的, 需要重写父类方法, 不然即使你做好了页面, 也还是空白页面
        var secondVC = SecondViewController(nibName: "SecondViewController", bundle: nil)
        
        self.presentViewController(secondVC, animated: true) { () -> Void in
        }
    }

下面就是SecondViewController.swift中的代码了. 这个页面我尝试着使用了一下xib, 可是第一次运行的时候, 一直是空白页面.一直不明白怎么回事, 最后在一篇文章中找到了原因.代码注释中写的有, 这里先看一下第二个页面的效果.

点击btn后的效果

接下来就是代码部分了.首先这里是之前所说的显示空白的原因, 以及解决办法

 //Swift下,子类不会默认继承父类的初始化方法,所以如果想要使用init nib的方法, 就要自己去添加该方法, 添加之后, 他会提示你需要添加以下的方法, 你直接添了就行, 具体原因, 还在考证中.
    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
    }

    required init(coder aDecoder: NSCoder) {//添加该方法
        fatalError("init(coder:) has not been implemented")
    }

这是xib连线生成的属性

    @IBOutlet var userNameTF: UITextField! //xib文件连线生成的, 这里xib用法没有变化, 变化的只是连线后生成的代码不一样了, 其实也只是代码写法不一样, 原理还是一样的.
    
    @IBOutlet var passwordTF: UITextField!
    
    @IBOutlet var surePasswordTF: UITextField!

剩下的就是点击登录按钮了.

    
    @IBAction func loginBtn(sender: AnyObject) { //xib文件连线关联的方法
        if (self.userNameTF.text.isEmpty){ //isEmpty 是Swift中的判断是否为空的方法
            var alert = UIAlertView(title: "提示", message: "用户名为空", delegate: self, cancelButtonTitle: "确定", otherButtonTitles: "取消")
            alert.show()
        }else{
            println("这里可以加其他的一些判断条件")
        }
    }
    
    func alertView(alertView: UIAlertView, clickedButtonAtIndex buttonIndex: Int){
        if(buttonIndex == 0){
            println("点击了确定")
        }else{
            println("点击了取消")
            
        }
    }

  结语.

     也许你会觉的这些都太过简单了, 没有什么技术含量. 我想说的这是我一个从只会OC的程序猿一步步学习Swift的过程, 这里没必要整太难的东西, 现在还是在学习语言用的阶段, 只是学习怎么用Swift.并不是探讨Swift中的难点.

 

posted on 2015-02-05 16:31  Now丶薄荷  阅读(2503)  评论(0编辑  收藏  举报

导航