[Swift] iOS開發筆記(一):UITableView

  • 26112
  • 0
  • iOS
  • 2014-08-03

摘要:[Swift]

Apple在WWDC2014發表了Swift, 相較起Objective-c,Swift 的編撰方式感覺親民多了,網路上也神速的在九天內出現了Swift中文翻譯文章。

The Swift Programming Language 中文版

 

這個來勢洶洶的語法讓人不得不花點時間去研究一下,這邊我就已網站上有的一些iOS範例來改寫編撰。首先就以在iOS開發中,比重占非常重的UITableView來作為第一個研究文章。

在Objective-c 的語法下使用一個UITableView可以參考下方這篇文章

[iOS]UITableView的基本觀念

 

接下來就在Swift下來實作一個UITableView

在Xcode 6 beta裏面建立一個新的iOS專案,在語言選擇的部分有Objective-c 以及 swift兩個語言可以選擇,

在這個範例中,我們選擇Swift。

 

在使用Swift建立的專案中,與objective-C不一樣,過去objective-c會幫你建立一個ViewController.h與ViewController.m檔案,

現在取而代之的都是ViewController.swift檔案。

 

拖拉UITableView控制項與UITableCell到主要畫面中

在Main.storyboard檔案中,拖拉一個UITableView 控制項到畫面中,另外拖拉一個UITableCell到畫面中,

選擇UITbleView控制項,按住鍵盤[Control]+滑鼠左鍵拖拉這個控制項與ViewController.swift產生關聯。


 

這邊將其命名為MyTable

 

選擇UITableCell控制項,到右方Attributes inspector 畫面中的 Identifier屬性中命名這個UITableCell為Cell。

 

撰寫處理畫面顯示的相關程式

開啓 ViewController.swift 檔案,在類別的部分我們要實作 UITableViewDataSource, UITableViewDelegate


import UIKit

//實作UITableViewDataSource, UITableViewDelegate
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
    
    //關聯到UI畫面上的控制項
    @IBOutlet var myTable : UITableView
    
    //建立資料陣列
    var ListArray: NSArray = ["Hello world", "Swift", "UITableView", "媽!我在這裡"]
    
    
    override func viewDidLoad() {
        super.viewDidLoad()

        //把UITableView的dataSource與delegate指向給自己
        myTable.dataSource = self
        myTable.delegate = self
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    //宣告這個UITableView畫面上的控制項總共有多少Row
    func tableView(tableView: UITableView!, numberOfRowsInSection section:Int) -> Int {
        return ListArray.count
    }
    
    //填充UITableViewCell中文字標簽的值
    func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
        let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "Cell")

        cell.textLabel.text = "\(ListArray.objectAtIndex(indexPath.row))"
        return cell
    }
}

 

 

編譯這個範例程式,可以看到UITableView顯示出資料了

 

在概念上,控制項的使用,委派...等等概念都跟原本Objective-C沒有什麼不同,取而代之的就是

語法的進入門檻較objective-c來的低一些。也是不錯的另一種選擇。

 

 

參考資料

Developing iOS8 Apps Using Swift – Part 1- Hello World

http://ios-blog.co.uk/tutorials/developing-ios-apps-using-swift-part-1/