swift學習選fruit項目

新建iOS single view application 名字爲PickAFruit, 打開main storyboard選中view controoler, 右上角, attribute inspector中simulated metrics 的size 選擇iphone 4.7-inch這樣view controller更像是一個iphone..swift

而後拖動4個控件到界面上label, image view, label, picker view



 數組

最後打開assistant editor, ctrl 拖動後3個控件到viewController.swift中, 會自動生成以下代碼app

    @IBOutlet weak var imageView: UIImageView!iphone

    @IBOutlet weak var infoLabel: UILabel!ide

    @IBOutlet weak var pickerView: UIPickerView!函數

在ViewController中新增以下屬性:ui

let fruits = ["Pick a Fruit", "Apples", "Oranges", "Lemons", "Limes", "Blueberries"]

讓ViewController實現兩個接口.code

class ViewController: UIViewController,UIPickerViewDataSource,UIPickerViewDelegate {

在viewDidLoad中讓ViewController自身成爲picker view的delegate
 component

//MARK - Life Cycle
override func viewDidLoad() {
    super.viewDidLoad()
    pickerView.delegate = self
    pickerView.dataSource = self
}

下面實現接口中定義的方法 以解決以下錯誤: Type 'ViewController' does not conform to protocol 'UIPickerViewDataSource'orm

完整代碼以下:

//
//  ViewController.swift
//  PickAFruit
//
//  Created by cyper on 16/6/3.
//  Copyright © 2016年 Moaz Tech. All rights reserved.
//

import UIKit

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
    
    let fruits = ["Pick a Fruit", "Apples", "Oranges", "Lemons", "Limes", "Blueberries"]
    
    @IBOutlet weak var imageView: UIImageView!
    
    @IBOutlet weak var infoLabel: UILabel!
    
    @IBOutlet weak var pickerView: UIPickerView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        pickerView.delegate = self
        pickerView.dataSource = self
        
        
        // 程序啓動時, 給image view設置一張默認的圖片.
        imageView.image = UIImage(named: "fruits.jpg")

    }
    
    // picker view有多少個組件(多少列), 好比date picker可能有三列, 分別是月, 日, 年, 這裏只有一列, 因此返回1.
    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
        return 1
    }
    
    // picker view有多少行(多少條記錄), 這裏就是fruits數組的大小
    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return fruits.count
    }
    
    // 每行顯示什麼內容, row是行號, 這裏直接根據行號從數組中取出要顯示的內容
    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return fruits[row]
    }
    
    // 當用戶選擇某項時的回調函數, row是用戶選擇的行號
    // 這裏根據用戶的選擇顯示不一樣的image和說明文字
    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        let fruitSelected = fruits[row]
        switch fruitSelected {
        case "Apples":
            imageView.image = UIImage(named: "apples.jpg")
            infoLabel.text = "These apples are red."
        case "Oranges":
            imageView.image = UIImage(named: "oranges")
            infoLabel.text = "These oranges are orange."
        case "Lemons":
            imageView.image = UIImage(named: "lemons.jpg")
            infoLabel.text = "These lemons are yellow."
        case "Limes":
            imageView.image =  UIImage(named: "limes")
            infoLabel.text = "These limes are green."
        case "Blueberries":
            imageView.image = UIImage(named: "blueberries.jpg")
            infoLabel.text = "These blueberries are blue."
        default:
            imageView.image = UIImage(named: "fruits.jpg")
            infoLabel.text = "Please enjoy  some fruit."
        }
        
    }
    
    
}

準備6張jpg水果圖片,打開Assets.xcassets, 將圖片拖動到AppIcon下面(見下圖)

選擇iphone6s, 運行..


知識點:
1. 使用imageView.image = UIImage(named: "apples.jpg")設置圖片

2. picker view的用法(實現2兩個接口, 設置viewController自身作爲picker view的delegate, 實現接口中的4個方法numberOf.., pickerView ..)

3. 上一篇博客有提到兩欄picker view的用法, 能夠對比看.

相關文章
相關標籤/搜索