删除单元格后刷新tableView

2024-04-21

我有一个 tableView,其中包含从 Firebase 填充的数据,当我单击删除按钮时,数据将从 Firebase 中删除,但它保留在我的应用程序中,并且在我关闭应用程序并重新打开它之前,它不会从 tableView 中删除数据。以下是我设置删除功能的方法:

func deletePost() {
        let uid = FIRAuth.auth()!.currentUser!.uid
        let storage = FIRStorage.storage().reference(forURL: "gs://gsignme-14416.appspot.com")
        FIRDatabase.database().reference().child("posts").child(uid).observe(.childAdded, with: { (snapshot) in

            let indexPath = self.selectedIndex

            let post = self.posts[(indexPath?.row)!] as! [String: AnyObject]
            self.key = post["postID"] as? String

            self.itemsRef = FIRDatabase.database().reference().child("posts").child(uid).child(self.key!)


        // Remove the post from the DB
        FIRDatabase.database().reference().child("books").child(self.key!).removeValue { error in
            if error != nil {
                print("error \(error)")
            }
        }

            })
        self.TableView.reloadData()
    }

这是委托和数据源:

    func numberOfSections(in tableView: UITableView) -> Int {
            // #warning Incomplete implementation, return the number of sections
            return 1
        }

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
         posts.count
}

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
       self.selectedIndex = indexPath
        self.didExpandCell()
        if isExpanded && self.selectedIndex == indexPath{
            print(indexPath)
        } else{
                    }}

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {

        if isExpanded && self.selectedIndex == indexPath{
            return 300
        }
              return 126
    }


    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cells", for: indexPath) as! ProfileTableViewCell

        //Configure the cell
        let post = self.posts[indexPath.row] as! [String: AnyObject]
        cell.Title.text = post["title"] as? String
        cell.Author.text = post["Author"] as? String
        cell.ISBN10.text = post["ISBN10"] as? String
        return cell
    }

我尝试在函数末尾添加 tableview.reloaddata 但这没有帮助。我究竟做错了什么?


从中删除您的对象posts数组,然后重新加载tableView在主队列之一中,您从 firebase 中删除对象。

检查下面的代码:

func deletePost() {
    let uid = FIRAuth.auth()!.currentUser!.uid
    let storage = FIRStorage.storage().reference(forURL: "gs://gsignme-14416.appspot.com")
    FIRDatabase.database().reference().child("posts").child(uid).observe(.childAdded, with: { (snapshot) in

        let indexPath = self.selectedIndex

        let post = self.posts[(indexPath?.row)!] as! [String: AnyObject]
        self.key = post["postID"] as? String

        self.itemsRef = FIRDatabase.database().reference().child("posts").child(uid).child(self.key!)


        // Remove the post from the DB
        FIRDatabase.database().reference().child("books").child(self.key!).removeValue { error in
            if error != nil {
                print("error \(error)")
            } else {
                //Here remove your object from table array
                self.posts.remove(at: indexPath?.row)
                //Reload your tableview in main queue
                DispatchQueue.main.async{
                    self.TableView.reloadData()
                }
            }
        }

    })
}

没有测试过,所以如果您对上述代码仍然有问题,请告诉我。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除单元格后刷新tableView 的相关文章

  • UITesting、XCTest 当前 ViewController 类

    简单的问题 我有一个按钮可以执行到下一个视图控制器的操作 我想写 UI XCTest 来告诉我它是否打开了我想要的视图控制器 UI 测试框架无法访问您的应用程序代码 这使得无法对实例进行类断言 你不能够directly告诉屏幕上的控制器的类
  • 在回调函数中调用目标c函数

    如何在回调函数中调用目标c函数 回调函数 static OSStatus inputRenderCallback void inRefCon AudioUnitRenderActionFlags ioActionFlags const Au
  • 如何使用 SwiftUI 获取多个屏幕上的键盘高度并移动按钮

    以下代码获取键盘显示时的键盘高度 并将按钮移动键盘高度 在转换源 ContentView 和转换目标 SecibdContentView 处以相同的方式执行此移动 但按钮在转换目标处不移动 如何使按钮在多个屏幕上移动相同 import Sw
  • IDFA 使用不当,您的应用不遵守 ios 中的限制广告跟踪设置

    I have checked the iTC settings I have uploaded the same app 2 days ago and it works fine but when today I uploaded the
  • 是否可以更改枚举中的关联值?

    我正在使用 Swift 枚举 想知道是否有一种方法可以更改枚举的关联值 例如下面的代码尝试但失败了 enum myEnum case SomeCase Int mutating func someFunc switch self case
  • 如何编辑应用程序包中的文件?

    在我的应用程序中 我从存储在捆绑资源中的 CSV 文件加载数据 但是 我希望能够在用户点击 更新 按钮时以编程方式更新此文件 有没有办法以编程方式更改应用程序包中的资源 这是我用来访问该文件的代码 NSString path NSBundl
  • Apple Developer 应用程序门户不再可以生成新的 Bundle Seed ID

    iOS 开发者门户中的新界面不再为您的应用程序 ID 提供 生成新的 按钮 取而代之的是 使用团队 ID 这将导致使用相同的种子 ID 任何人都知道为什么要进行更改以及您应该如何使用新的捆绑包种子 ID 随意补一些 不再可能生成新的种子 I
  • 删除分组 UITableView 中的分隔符

    我需要使用自定义单元格创建分组表格视图 每个单元格必须有一个背景图像 以便一个单元格的图像会接触第二个单元格的图像 依此类推 我尝试将分隔符样式设置为 无 但我仍然得到单元格之间的透明分隔符 请帮我删除单元格之间的空间 祝你有美好的一天 谢
  • 二元运算符“/”不能应用于两个(Int)操作数[重复]

    这个问题在这里已经有答案了 我得到了Binary operator cannot be applied to two Int operands当我将以下代码放入 Xcode 中的 Swift Playground 时出错 func sumO
  • 是否可以使用UIPageControl来控制UITableView的移动?

    从Apple示例 PageControl 中我们可以知道UIPageControl可以用来控制scrollview中页面的移动 由于 UITableView 是 UIScrollView 的子类 我想使用 UIPageControl 来控制
  • 将 Armadillo C++ 库导入 Xcode

    我是 Mac 用户 正在尝试安装和导入 C Armadillo 库 以下是我到目前为止所采取的步骤 1 我从其网站下载了犰狳库 2 我仔细阅读了下载文件中的 Readme txt 文件 解释了如何安装它 3 我使用CMake将犰狳下载文件制
  • 使用 BGTaskScheduler 进行后台获取与调试模拟完美配合,但在实践中却不起作用

    我在 appDelegate 的 didFinishLaunchingWithOptions 中注册后台获取任务 BGTaskScheduler shared register forTaskWithIdentifier Backgroun
  • Swift:协议、结构、类

    我开始学习 Swift 语言 但在理解协议 结构和类方面遇到了困难 我来自 Android 方面的编程 所以我相信 Swift 协议基本上是 Java 接口 其中每一个的正确用例是什么 这些类比并不 完全 正确 但这就是我所理解的要点 是的
  • 使用 ZBarSDK 时 iPhone 相机失去自动对焦功能

    我正在开发一个应用程序 用户可以选择是否要扫描条形码或拍摄某物的照片 为了拍照 我正在使用UIImagePickerController照常 为了扫描条形码 我使用 ZbarSDK 1 2ZBarReaderViewController 拍
  • UILabel 中的文本未垂直居中

    我使用以下代码创建了一个标签 func setupValueLabel valueLabel numberOfLines 1 valueLabel font UIFont name Avenir Black size 50 valueLab
  • removeItemAtPath 完成

    我正在以这种方式删除路径上的文件 UIPanGestureRecognizer gesture UIPanGestureRecognizer sender UIButton button UIButton gesture view UIPa
  • 如何在Sprite Kit中实现鼠标关节?

    我已经在 iOS 上用 Cocos2d Box2d 编写了拖放功能的工作实现 我需要将它移植到 Sprite Kit 逻辑非常基本 当用户触摸屏幕时 找到手指下的精灵 在找到的精灵和场景的物理体之间创建鼠标关节 将关节的目标设置为触摸位置
  • iOS Swift 和 reloadRowsAtIndexPaths 编译错误

    我与 xCode Swift 陷入僵局并刷新 UITableView 的单行 这条线有效 self tableView reloadData 而这条线没有 self tableView reloadRowsAtIndexPaths curr
  • WKWebview 中的 iCLoud 文档选择器关闭容器视图

    我有一个 WKWebview 加载基于 Web 的 UI 我希望用户能够从其 iCloud 文档上传文件 我已授予正确的权限 并且可以浏览 iCloud 文档 但是 当我选择文件或单击取消按钮时 文档选择器视图也会关闭 WKWebview
  • 下载进度条在 iOS 企业发行版中没有改变进度

    我正在通过企业分发开发和分发 iPad 应用程序 它们下载并执行良好 因此一切正常 Web 链接 ipa 文件 plist 文件 配置 问题 是 当用户单击链接进行下载时 iPad 中显示下载进度的进度条显示 正在等待 但却是空的并且永远不

随机推荐

  • 在 C 中为 fgets 创建超时[重复]

    这个问题在这里已经有答案了 我的目的是创建一个 tfgets 函数 tfgets 与 fget 类似 只是它的超时时间为 1 秒 如果 1 秒内没有收到输入 则程序返回 NULL 否则 它将返回 fgets 返回的任何内容 如何为 tfge
  • Gson: [Class] 声明多个名为 [property] 的 JSON 字段

    我正在尝试使用以下 POJO 序列化为 JSONGson https github com google gson public class Member private long id private long customerAccou
  • Pytest 适用于旧的模拟,但不适用于 unittest.mock

    我正在将一些代码从 Python 2 移植到 3 并且py test玩得不好patch装饰器来自unittest mock 当我使用patch装饰器将模拟传递到测试函数的参数中 py test相反 将该参数解释为固定装置 并且无法设置测试
  • 如何在使用用户限制资源访问保护的 python eve api 中创建新用户帐户

    我首先使用 python eve 框架创建了一个 Web api 无需身份验证或用户帐户 效果非常好 我现在正在尝试添加身份验证和用户帐户 但遇到了一些困难 我想使用用户限制的资源访问 但是如果资源受到限制 用户如何创建新的用户帐户 我缺少
  • 如何从数据库中删除字段?

    当我单击该图标时 所单击的新闻字段将添加到数据库中 final fireStore FirebaseFirestore instance IconButton onPressed async newsController addNews a
  • 区分大小写的 SQL 区分大小写

    我正在尝试请求一个区分大小写的结果 例如在我的数据库中我有 ABCdef abcDEF abcdef 请求是 SELECT FROM table WHERE col abcdef 但我有 3 行结果 我只想要 abcdef 我尝试找到解决方
  • 如何获取 Kendo DropDownList 的选定值

    我不知道如何确定在我的剑道下拉列表中选择了哪个项目 我的观点将其模型定义为 model KendoApp Models SelectorViewModel ViewModel 定义为 public class SelectorViewMod
  • Postmessage 和 sendmessage 的替代方案

    我有一个程序 它使用多个线程来执行某些任务 每个线程都有一堆任务要执行 执行其中之一后 每个线程都会向主屏幕调用一条发布消息来更新日志 现在我有六万个任务 每个线程一万个 六个线程 执行每个任务线程后调用发布消息 但由于这些帖子消息 我的应
  • C# 数组还是字典?

    我想知道 C 数组的访问速度是否恒定 我需要在静态数组中存储 1000 个项目 这些项目将在服务器启动期间初始化 该数组将被只读使用 所以数组不会发生任何变化 我应该使用简单的 C 数组 new MyClass 还是字典 我对 C 非常陌生
  • 从 jQuery 中的标签获取值

    a href at privat class Privat Privat a 我需要一个 Jquery 来从上面的链接获取私有的 我在这里尝试过 Privat click function e e preventDefault alert
  • 为什么在尝试通过 pymongo 查询我的 mongodb 数据库时会得到 pymongo.cursor.Cursor?

    我在 mongodb 数据库中消费了一堆推文 我想使用 pymongo 查询这些推文 例如 我想查询 screen name 但是 当我尝试执行此操作时 python 不会返回推文 而是返回有关 pymongo cursor Cursor
  • 从 jquery 和 haml 渲染部分内容

    我计划执行的功能是根据从选择标记中选择的数字插入一些表单元素 我有一个名为 number of passengers 的选择标签 并且我计划为所选数量动态附加新的乘客字段 假设我从 number of passengers 中选择 2 个表
  • 使用 PHP 从

    我想获取里面的文字
  • 更新多行而不循环

    我想在更新语句中一次更新多行而不使用循环 我有下表 其中包含一些记录 如下所示 Table create table test col1 int col2 int col3 varchar 20 col4 datetime name var
  • 如何将 .NET Framework 从版本 3.5 更改为版本 4.0

    我在 NET Framework 3 5 中创建了一个类库 现在我想将 NET Framework版本更改为4 0 我怎样才能做到这一点 在视觉工作室中 右键单击您的项目 选择属性 选择应用程序选项卡 将目标框架更改为所需的框架 如果你没有
  • 如何以编程方式更改屏幕分辨率[重复]

    这个问题在这里已经有答案了 当我的应用程序加载时 系统屏幕分辨率需要更改为1024 768 当其关闭时 它会更改为原始屏幕解决方案 如何实现这一目标 有什么可行的解决办法吗 基本上我正在使用 vb net 无论如何 我欢迎 C 的解决方案
  • 警告:尝试在已呈现的 <...> 上呈现 (null)

    我在 a 上设置了长按手势UITableView呈现出一个UIAlertController包含单元格的文本 当 的时候UIAlertController出现后我收到此警告 Attempt to present
  • Valgrind 自动测试——它们在什么地方使用过吗?

    您认为基于 valgrind 工具套件运行一组自动测试有意义吗 您听说过或看到过这样的设置吗 这样的设置可以执行哪些自动 不受人类直觉影响 操作 如果您在单元测试或最终构建测试中检查内存问题 错误代码 那么这是有意义的 可能有两种方法 编写
  • ::FindWindow 从服务应用程序失败

    从服务应用程序调用时 Windows API FindWindow 函数失败 GetLastError 也返回 0 成功 这是一些特权 访问权问题吗 你认为这是设计问题吗 我应该使用另一种IPC方法吗 leppie 是的 Windows 服
  • 删除单元格后刷新tableView

    我有一个 tableView 其中包含从 Firebase 填充的数据 当我单击删除按钮时 数据将从 Firebase 中删除 但它保留在我的应用程序中 并且在我关闭应用程序并重新打开它之前 它不会从 tableView 中删除数据 以下是