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)
}
}
![](https://img-blog.csdn.net/20150701150628436?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWGVybmFnYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
接下來就是大家最愛command+R的快樂時間了,小夥伴們會發現說,真的出現了一個『Delete』很開心的繼續按下去~
![](https://img-blog.csdn.net/20150701150539105?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWGVybmFnYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
然後!就沒有然後了。。。
別擔心這是正常的,在這裡我們說明一下當你按下去的時候 數據的確被刪除了沒錯,可是畫面沒有重新載入,所以才有這樣的現象發生。
我們來證實一下,我們在加入一行程式碼,把陣列的內容打印出來
println("Total item: \(self.restaurantNames.count)")
for name in restaurantNames{
println(name)
}
![](https://img-blog.csdn.net/20150701150804938?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWGVybmFnYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
加好之後的程式碼長這個樣子,之後小夥伴們再次按下command+R
再次運行一下~
![](https://img-blog.csdn.net/20150701150712082?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWGVybmFnYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
我們就拿第二欄位的『Homie』 來做實驗吧!請小夥伴們看仔細了欄位的順序。之後我們在滑動刪除第二個欄位。當然什麼事情也沒發生,不過真的沒有發生嗎?我們來看看xocde是怎麼跟我們說的:
![](https://img-blog.csdn.net/20150701150853839?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWGVybmFnYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
沒錯根據當事人(Xcode)現身說法,他的確是刪掉了第二欄的『Homie』真的是他幹了,他也真的幹了!但是畫面沒更新是你沒說要更新啊!不是我我的問題啊!
所以小夥伴們一定都知道了,接下來我們要做的就是更新畫面。
請各位小夥伴們加入一下代碼
self.tableView.deleteRowsA
9d42
tIndexPaths([indexPath], withRowAnimation: .Fade)
再次快樂的按下command+R 你就會發現你所刪除的表格,他真的消失了~
完成之後的程式碼長這個樣子~
![](https://img-blog.csdn.net/20150701150921750?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWGVybmFnYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
這篇的分享呢就到這裡到一個段落,也許有小夥伴會說,表格欄位明明還有很多功能啊! 什麼打勾啊!變色啊!之類的,在這裡阿達要說明一下,的確表格欄位還有很多功能這裏沒有說明,但是考慮到說後面要講的內容裡面跟這裡會有所重疊到。所以就極簡約的講了一個刪除功能。而這個功能也是阿達在實務經驗中最實用的功能。所以阿達認為很多大神會教你很多很酷炫的功能如何去實現,但是在這裡我們是為了讓小夥伴們能夠快速地用swift開發出一個app所以只講解最實用的部分。
感謝看官老爺們的收看,歡迎大家動手做做看,讓我們用一行一行的代碼,一步一步實現我們的夢想,我是阿達,我們下回見。
另外關於字體的問題,阿達深知入境隨俗的重要,原本的規劃是打算進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所以只講解最實用的部分。
感謝看官老爺們的收看,歡迎大家動手做做看,讓我們用一行一行的代碼,一步一步實現我們的夢想,我是阿達,我們下回見。
相关文章推荐
- Swift学习三
- Swift学习二
- Swift学习一
- Swift开发学习(一):初始篇
- Swift数据类型(基础篇)
- 对数组进行各种操作
- 接口和扩展
- swift 在线playground
- swift 值得学习的项目
- iOS学习笔记--01swift实现提示框第三方库:MBProgressHUD
- Swift interface builder问题
- Swift functions with external parameters
- swift
- 在项目里交叉使用Swift和OC
- swift创建空项目(最新版)
- AutoLayout Swift demo
- swift实作app 交流分項一(tableview)
- Swift学习笔记之基础篇(一)
- swift循环
- swift学习网站