您的位置:首页 > 移动开发 > Swift

swift实作app 交流分項二(刪除表格攔位)

2015-07-01 14:58 260 查看
一行代碼一場夢,大家好我是阿達。上一次發帖經驗讓阿達深深的認識了許多的版規還有運作方式。所以以後的發文會考慮篇幅,字數。盡量只講關鍵技術,其實這是一個很糾結的問題,因為我希望帶給大家的是一個圖文並茂的解說,而不是單純的複製貼上程式碼。所以又花了一點時間把原本的流程重新規劃了一下。往後的帖子(包括這篇),阿達會盡量以一個觀念為主來解釋,而不是以一個元件的使用來解釋。希望各位觀眾老爺們會喜歡。

另外關於字體的問題,阿達深知入境隨俗的重要,原本的規劃是打算進ios第十期(八月十七號),拼第二期招生(七月十號) 因為時間充裕的關係就慢工出細活的慢慢寫。結果前幾天得知開班時間整整提早了兩個星期!(八月二號開課,六月二十六號)結果變成說每一篇都要趕工生產,剩下三天的時間要寫完十篇技術文,還要再用剩下三天來完成筆試面試...我都覺得我簡直高產似母豬啊…(遠望)。如此一來也就沒又辦法再顧慮字體的問題了~在這裡跟觀眾老爺們道歉。

今天我們要談的是關於表格列,自訂動作,以及MVC。在這篇當中呢,將為之前的項目中加入刪除列表的功能,還有導覽控制器,會讓一個單純的表格瞬間感覺不同唷!

在開始之前我想先介紹一下MVC,也就是Model,View,Controller,是使用這介面程式設計中最常被引用的設計模式。MVC並不是iOS的專利,如果曾經學過JAVA或是RUBY的話對他應該也不陌生,這是一個強大的設計模式,用於各種軟體的應用。

無論各位小夥伴們學習的是什麼語言,讓你成為優秀的程式設計師的一個重要觀念就是『關注點分離』 Separation of Concern 簡稱 SoC。這個觀念其實很簡單,關注點(Concern)就是有關軟體功能的差異性。這個觀念是鼓勵開發者將一個大的功能或是程式,分散成數個領域,每個領域都有自己所負責的責任。

而MVC也是SoC另外的例子,MVC背後的核心概念就是明確的將使用者介面分成三個區塊,每一個區塊負責相對應的功能。

模組(Model):負責保存資料或者操作。

視圖(View):管理資訊的視覺呈現。

控制器(Concern):控制器是連接模組跟視圖之間的橋樑。他將使用者在視圖上面的互動(例如點擊)轉譯成在模組中要執行的動作。

舉例來說,當使用者在視圖上面點擊了『刪除』之後,接下來的控制器就會觸發模型中的刪除動作,然後他會要求刷新視圖來反應資料的更新。(也就是把資料刪除)

說了那麼多,大家還是來實作吧,接續我們上一篇所做的項目,如果是第一次看到阿達發帖的小夥伴,可以到這個地方下載到上一篇的項目檔案。不過還是建議看過上一篇之後整個觀念會比較連貫喔。

上一篇:http://bbs.itheima.com/thread-205690-1-1.html

項目載點:http://pan.baidu.com/s/1dDwEfVN

今天我們要將它加上『刪除』的功能,倘若是已經完全了解MVC架構的話,應該對如何執行刪除列會有點概念了,這裏有三件事情你必須去做:

1.撰寫程式碼將它切換成編輯模式,以便刪除

2.從模型中刪除對應的表格資料

3.對應表格資料變更,重新載入視圖

首先在這裡說明一下,在這裡有一個方法叫做tableView(_commitEditingStyle editingStyle:forRowAtIndexPath indexPath:)

你只要時做這個方法就可以了。So Easy~~~~

只要加入以下程式碼:

    override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {

        if editingStyle == .Delete{

            

            self.restaurantNames.removeAtIndex(indexPath.row)

            self.restaurantTypes.removeAtIndex(indexPath.row)

            self.restaurantLocations.removeAtIndex(indexPath.row)

            self.restaurantImages.removeAtIndex(indexPath.row)

        }

        

        

    }



接下來就是大家最愛command+R的快樂時間了,小夥伴們會發現說,真的出現了一個『Delete』很開心的繼續按下去~



然後!就沒有然後了。。。

別擔心這是正常的,在這裡我們說明一下當你按下去的時候 數據的確被刪除了沒錯,可是畫面沒有重新載入,所以才有這樣的現象發生。

我們來證實一下,我們在加入一行程式碼,把陣列的內容打印出來

        println("Total item: \(self.restaurantNames.count)")

        

        for name in restaurantNames{

            println(name)

        }



加好之後的程式碼長這個樣子,之後小夥伴們再次按下command+R

再次運行一下~



我們就拿第二欄位的『Homie』 來做實驗吧!請小夥伴們看仔細了欄位的順序。之後我們在滑動刪除第二個欄位。當然什麼事情也沒發生,不過真的沒有發生嗎?我們來看看xocde是怎麼跟我們說的:



沒錯根據當事人(Xcode)現身說法,他的確是刪掉了第二欄的『Homie』真的是他幹了,他也真的幹了!但是畫面沒更新是你沒說要更新啊!不是我我的問題啊!

所以小夥伴們一定都知道了,接下來我們要做的就是更新畫面。

請各位小夥伴們加入一下代碼

self.tableView.deleteRowsA
9d42
tIndexPaths([indexPath], withRowAnimation: .Fade)

再次快樂的按下command+R 你就會發現你所刪除的表格,他真的消失了~

完成之後的程式碼長這個樣子~



這篇的分享呢就到這裡到一個段落,也許有小夥伴會說,表格欄位明明還有很多功能啊! 什麼打勾啊!變色啊!之類的,在這裡阿達要說明一下,的確表格欄位還有很多功能這裏沒有說明,但是考慮到說後面要講的內容裡面跟這裡會有所重疊到。所以就極簡約的講了一個刪除功能。而這個功能也是阿達在實務經驗中最實用的功能。所以阿達認為很多大神會教你很多很酷炫的功能如何去實現,但是在這裡我們是為了讓小夥伴們能夠快速地用swift開發出一個app所以只講解最實用的部分。

感謝看官老爺們的收看,歡迎大家動手做做看,讓我們用一行一行的代碼,一步一步實現我們的夢想,我是阿達,我們下回見。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: