iOS開發使用Picker View實現一個圖片瀏覽的App

來源:互聯網
上載者:User

iOS開發使用Picker View實現一個圖片瀏覽的App

今天我們要簡單做一個通過Picker View控制項的選擇,然後在另一個介面顯示圖片的App。主要模組由兩部分,即Picker View控制項的使用,以及兩個介面間的資料傳遞。

(1)在第一個介面中拖入一個Picker View控制項(有點像Date Picker),用來滾動選擇圖片的名稱;在第二個介面中拖入一個ImageView.用來根據第一個介面傳入的資料顯示不同的圖片。介面布局如下:

 

(2)拖入幾張照片到images.xcassets中,用來顯示,本文使用5張照片。

(3)在ViewController.swift中為需要在Picker View中顯示的文字建立一個數組,具體如下:

 

(3)建立一個swift檔案,作為第一個介面ViewController.swift的擴充,用來實現2個Picker View的Protocol,(可以理解為實現介面)。兩個Protocol分別為:UIPickerViewDataSource;UIPickerViewDelegate。具體代碼如下:

 

(4)綁定Picker View控制項到代碼中,並且在viewDidLoad中綁定剛才實現的資料來源和代理;

 

(5)實現完以上步驟後,運行程式,發現Picker View已經可以正常使用,並能顯示數組中的文本;

 

(6)在進行介面跳轉的時候需要傳遞資料,要用到prepareForSegue方法。可以先指定Storyboard Segue的Identifier為:“GoToGallery”。為什麼一定要指定Identifier。因為同一個介面可能要跳到多個不同的介面,所以會有不同的Segue。方法實現如下:

 

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {            if segue.identifier == GoToGallery{                    let index = picPicker.selectedRowInComponent(0)                        var imageName:String?            switch index{                        case 0:                imageName = gugong                break                            case 1:                imageName = tiantan                break                            case 2:                imageName = shuilifang                break                            case 3:                imageName = niaochao                break                            case 4:                imageName = tiananmen                break                            default :                imageName = nil            }                        var vc = segue.destinationViewController as! GalleryViewController            vc.imageName = imageName                    }//if;    }//prepareForSegue();

(7)在第二個介面的中如何進行擷取呢?聲明一個全域的變數imageName,然後根據這個imageName來顯示圖片。實現代碼如下:

 

 

(8)經過上述步驟後,實現效果如下:

 

 

 

 

下面附上幾個重要類的所有代碼:

ViewController.swift:

 

import UIKitclass ViewController: UIViewController {            @IBOutlet weak var picPicker: UIPickerView!        let pic = [故宮,天壇,水立方,鳥巢,天安門]        override func viewDidLoad() {        super.viewDidLoad()        picPicker.dataSource = self        picPicker.delegate = self            }    override func didReceiveMemoryWarning() {        super.didReceiveMemoryWarning()        // Dispose of any resources that can be recreated.    }        override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {            if segue.identifier == GoToGallery{                    let index = picPicker.selectedRowInComponent(0)                        var imageName:String?            switch index{                        case 0:                imageName = gugong                break                            case 1:                imageName = tiantan                break                            case 2:                imageName = shuilifang                break                            case 3:                imageName = niaochao                break                            case 4:                imageName = tiananmen                break                            default :                imageName = nil            }                        var vc = segue.destinationViewController as! GalleryViewController            vc.imageName = imageName                    }//if;    }//prepareForSegue();    //Unwind Segue    @IBAction func close(segue:UIStoryboardSegue){            print(closed)    }        }//ViewController()

 

GalleryViewController.swift:

 

import UIKitclass GalleryViewController: UIViewController {        @IBOutlet weak var beautyImage: UIImageView!        var imageName:String?    override func viewDidLoad() {        super.viewDidLoad()        if imageName != nil{                    beautyImage.image = UIImage(named: imageName!)        }            }    override func didReceiveMemoryWarning() {        super.didReceiveMemoryWarning()        // Dispose of any resources that can be recreated.    }    }

ViewControllerExtension.swift:

 

 

import UIKit//建立ViewControllerExtension.swift,作為第一個介面ViewController的擴充;extension ViewController: UIPickerViewDataSource{    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int{            return 1    }        func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{            return pic.count    }}extension ViewController: UIPickerViewDelegate{     func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String!{            return pic[row]    }}


 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.