UITabelview的刪除

来源:http://www.cnblogs.com/huahuahu/archive/2017/01/14/UITabelview-de-shan-chu.html
-Advertisement-
Play Games

刪除的效果 AutomaticBottomFadeleftmiddlenonerighttop 簡單刪除先刪除數據源里的數據,然後再刪除cell,否者會報錯 let indexPath = NSIndexPath.init(forRow: 1, inSection: 0) let indexPath... ...


  1. 刪除的效果

    • Automatic
    • Bottom
    • Fade
    • left
    • middle
    • none
    • right
    • top
  2. 簡單刪除
    先刪除數據源里的數據,然後再刪除cell,否者會報錯

        let indexPath = NSIndexPath.init(forRow: 1, inSection: 0)
        let indexPath1 = NSIndexPath.init(forRow: 3, inSection: 0)
        //title是數據源
        self.titles.removeAtIndex(0)
        self.titles.removeAtIndex(0)      
        self.tableView?.deleteRowsAtIndexPaths([indexPath,indexPath1], withRowAnimation: .Left)
        ```    
    
        如果先刪除cell,再刪除資料庫,會拋出exception
    
self.tableView?.deleteRowsAtIndexPaths([indexPath,indexPath1], withRowAnimation: .Left)
        //title是數據源
        self.titles.removeAtIndex(0)
        self.titles.removeAtIndex(0)

2016-07-30 21:44:26.613 UITableViewLearn[14976:575144] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (4) must be equal to the number of rows contained in that section before the update (4), plus or minus the number of rows inserted or deleted from that section (0 inserted, 2 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out).'

UIKit在調用deleteRowsAtIndexPaths時,會判斷前後數據源的一致性,如果前後不一致,會拋出異常。然而只是判斷cell的個數是否一致。如果刪除了第0、1列的數據,然後刪除第2、3列的cell,也不會報錯。

    let indexPath = NSIndexPath.init(forRow: 2, inSection: 0)
    let indexPath1 = NSIndexPath.init(forRow: 3, inSection: 0)
    //title是數據源
    self.titles.removeAtIndex(0)
    self.titles.removeAtIndex(0)
    self.tableView?.deleteRowsAtIndexPaths([indexPath,indexPath1], withRowAnimation: .Left)

上面的不會報錯

  1. 簡單插入

    同樣是先插入數據,再插入cell。

    self.titles.insert("insert", atIndex: 1)
    self.tableView?.insertRowsAtIndexPaths([indexPath], withRowAnimation: .Left)
    
  2. 同時刪除和插入

    • 準備數據源
    • 調用beginUpdates()
    • 調用deleteRowsAtIndexPaths, insertRowsAtIndexPaths:等方法
    • 調用endUpdates方法
  3. 對indexPath進行操作的次序

    • 在一個animation block(beginUpdates()endUpdates之間的部分)中,所有的插入選擇操作都發生在刪除操作之後
    • 刪除和reload操作的指定的indexpath是原來tableView(未發生動畫之前)的indexPath
    • 插入操作指定的indexPath是前面代碼執行完成以後的新tableView的indexPath。
      於此對比,如果對一個mutable數組進行插入和刪除,那麼前面的刪除和插入操作會改變這個數組某個元素的index。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前兩天群里有兄弟在吐槽,做遠程推送的時候:老闆要求APP桌面圖標的右上角顯示紅色未讀數字(數字角標)要精準,有多少未讀通知就顯示數字幾;但是後臺的弟兄在發送推送通知的時候,每次的角標是1,然後要移動端這邊自己去把這個未讀數字去累加,然後顯示在APP上;並且後臺非常固執的認為這個累加未讀消息數量是在移 ...
  • 開發小程式所需的基本技能 關於小程式的介紹和使用場景這裡不作介紹,這個系列的文章會一步一步地帶領大家快速地學習和掌握小程式的開發。 關於還沒有接觸過小程式的開發者來說,最關心的問題無非就是,開發小程式,我需要掌握哪些技能? 從我學習小程式的經驗中得出,開發小程式的基本要求: 如果你是一名已經工作1年 ...
  • 演示環境:Mac OSX10.12.2 Xcode8 先瞄一眼最終成果~ 1.JDK,DBMS(演示環境使用Mysql) 2.創建sonar資料庫和用戶 3. "下載sonar" 演示環境使用v6.1,下載後解壓到 /usr/local/sonar/ 4. "下載sonar runner" :演示環 ...
  • 目錄操作和文件管理 學習目標 1.理解單例 2.掌握NSFileManager類常用的文件管理操 3.掌握NSFileHandle類常用的文件數據操作 4.瞭解NSData類的常用操作 5.掌握Plist文件讀寫 —————————————————————— 通常程式在運行中或者程式結束之後,需要保 ...
  • 記憶體管理 對於這篇呢,其實現在都是ARC模式,正常狀態下基本不用我們去手動釋放記憶體,所以如果不是要面試呀、裝逼或者扎實功底的,就先別看了或者瞭解下即可,因為像面試時,有些面試官想看你的基礎時,就有些人會問,現在工作基本不會用到。 學習目標 1. 掌握記憶體管理的原理 2. 掌握手動記憶體管理 1.需要理 ...
  • 繼承、多態、類別 學習目標 1、繼承的含義 2、父類子類的別稱 3、欄位和消息的繼承 4、重寫和重寫消息的調用 5、多態 6、類別(Category) 1.需要理解的知識 面向對象的三個基本特征: 1、封裝 2、繼承 3、多態 1、繼承(單繼承): 父類(超類)和子類的關係。 繼承的兩個類,存在父子 ...
  • 一. MJRefresh的類解釋. 1.MJRefreshComponent 所有刷新控制項的基類別.(component: 成分,組件) 2.MJRefreshNormalHeader 預設的下拉刷新控制項 3.MJRefreshAutoNormalFooter 預設的上拉刷新控制項 下拉刷新控制項自適應 ...
  • 光,電磁波和顏色光是一種電磁波,頻率被限定在較窄的範圍內。不同頻率(對應不同的波長)的電磁波(光)有不同的顏色。可見光的最長波長是780nm,對應紅色;最短波長是380nm,對應於紫色。太陽光可以發射可見範圍內所有頻率的波長,表現為白光。當白光遇到物體時,一些頻率的電磁波被反射,一些頻率的電磁波被吸... ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...