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中的難點.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM