開(kāi)始用Swift開(kāi)發(fā)iOS 10 - 9 Table Row的刪除, UITableViewRowAction和UIActivityViewController的使用

上一篇開(kāi)始用Swift開(kāi)發(fā)iOS 10 - 8 Table View和UIAlertController的交互是Table Row選擇的操作,這一篇繼續(xù)上一篇的代碼實(shí)現(xiàn)刪除操作。

滑動(dòng)刪除

  • 實(shí)現(xiàn)UITableViewDataSource中相應(yīng)方法:
  override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
        
    }

此時(shí)滑動(dòng)有刪除按鈕:

  • 刪除數(shù)據(jù)
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
        if editingStyle == .delete {
            restaurantNames.remove(at: indexPath.row)
            restaurantLocations.remove(at: indexPath.row)
            restaurantTypes.remove(at: indexPath.row)
            restaurantIsVisited.remove(at: indexPath.row)
            restaurantImages.remove(at: indexPath.row)
        }
}

UITableViewCellEditingStyle有兩種insertdelete松蒜。
運(yùn)行后發(fā)現(xiàn)刪除動(dòng)作后但骨,相應(yīng)的table view row被沒(méi)有消失蜘犁,因?yàn)樯厦娴膭h除只是刪除了相應(yīng)數(shù)組中的數(shù)據(jù)姚炕,并沒(méi)有在視圖上顯示征唬,如要重新加載才會(huì)刪除菩咨。

重新加載UITableView

tableView(_:commit:forRowAt:)后添加:
tableView.reloadData()
另外吠式,更好的刷新table view的方法是使用UITableViewdeleteRows(at:with:)方法,還有動(dòng)畫(huà)效果:
tableView.deleteRows(at: [indexPath], with: .fade)

用UITableViewRowAction為滑動(dòng)產(chǎn)生更多動(dòng)作

override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
       // 1 
        let shareAction = UITableViewRowAction(style: .default, title: "Share", handler: {
            (action, indexPath) -> Void in
            // 3
            let defaultText = "Just checking in at " + self.restaurantNames[indexPath.row]
            let activityController = UIActivityViewController(activityItems: [defaultText], applicationActivities: nil)
            self.present(activityController, animated: true, completion: nil)
        })
        // 1
        let deleteAction = UITableViewRowAction(style: .default, title: "Delete", handler: {
            (action, indexPath) -> Void in
            
            self.restaurantNames.remove(at: indexPath.row)
            self.restaurantLocations.remove(at: indexPath.row)
            self.restaurantTypes.remove(at: indexPath.row)
            self.restaurantIsVisited.remove(at: indexPath.row)
            self.restaurantImages.remove(at: indexPath.row)
            
        })
        // 2
        return [deleteAction, shareAction]
    }
  • 1 UITableViewRowAction的用法和UIAlertAction類似抽米。style相同特占,具體功能是在回調(diào)閉包中實(shí)現(xiàn)的。
  • UIActivityViewController繼承是UIViewController云茸,提供一些服務(wù)是目,例如拷貝到剪貼板,分享內(nèi)容到社交媒體标捺,通過(guò)Messages發(fā)送項(xiàng)目等懊纳。
  • 一旦實(shí)現(xiàn)了tableView(_:editActionsForRowAt:)方法揉抵,tableView(_:commit:forRowAt:)方法產(chǎn)生delete按鈕將不再產(chǎn)生,所以要在tableView(_:commit:forRowAt:)中添加delete按鈕嗤疯。
  • 2 返回的UITableViewRowAction的數(shù)組冤今,action的顯示順序是,按照數(shù)組的順序在屏幕從有到左顯示茂缚。
  • 3 defaultText是分享的內(nèi)容戏罢,不僅可以是文本,也可以添加圖片對(duì)象UIImage脚囊。此處代碼修改一下:
let defaultText = "Just checking in at " + self.restaurantNames[indexPath.row]
if let imageToShare = UIImage(named: self.restaurantImages[indexPath.row]) {
    let activityController = UIActivityViewController(activityItems: [defaultText, imageToShare], applicationActivities: nil)
    self.present(activityController, animated: true, completion: nil)
}
3407495D-9E60-4E6C-8EFA-31A562A14907.png

定制UITableViewRowAction

可以修改背景顏色:

shareAction.backgroundColor = UIColor(red: 48.0/255.0, green: 173.0/255.0,
                                              blue: 99.0/255.0, alpha: 1.0)
        deleteAction.backgroundColor = UIColor(red: 202.0/255.0, green: 202.0/255.0,
                                               blue: 203.0/255.0, alpha: 1.0)

代碼

Beginning-iOS-Programming-with-Swift

說(shuō)明

此文是學(xué)習(xí)appcode網(wǎng)站出的一本書(shū) 《Beginning iOS 10 Programming with Swift》 的一篇記錄

系列文章目錄

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市凑术,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌所意,老刑警劉巖淮逊,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異扶踊,居然都是意外死亡泄鹏,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門秧耗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)备籽,“玉大人,你說(shuō)我怎么就攤上這事分井〕碘” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵尺锚,是天一觀的道長(zhǎng)珠闰。 經(jīng)常有香客問(wèn)我,道長(zhǎng)瘫辩,這世上最難降的妖魔是什么伏嗜? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮伐厌,結(jié)果婚禮上承绸,老公的妹妹穿的比我還像新娘。我一直安慰自己挣轨,他們只是感情好军熏,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著卷扮,像睡著了一般羞迷。 火紅的嫁衣襯著肌膚如雪界轩。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,829評(píng)論 1 290
  • 那天衔瓮,我揣著相機(jī)與錄音浊猾,去河邊找鬼。 笑死热鞍,一個(gè)胖子當(dāng)著我的面吹牛葫慎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播薇宠,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼偷办,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了澄港?” 一聲冷哼從身側(cè)響起椒涯,我...
    開(kāi)封第一講書(shū)人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎回梧,沒(méi)想到半個(gè)月后废岂,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡狱意,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年湖苞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片详囤。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡财骨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出藏姐,到底是詐尸還是另有隱情隆箩,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布羔杨,位于F島的核電站摘仅,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏问畅。R本人自食惡果不足惜娃属,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望护姆。 院中可真熱鬧矾端,春花似錦、人聲如沸卵皂。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至殴玛,卻和暖如春捅膘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背滚粟。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工寻仗, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人凡壤。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓署尤,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親亚侠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子曹体,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容