【问题标题】:UITableView reload dataUITableView 重新加载数据
【发布时间】:2023-03-31 10:11:01
【问题描述】:

我正在为 iphone 制作一个基于导航的应用程序。

我的一个视图控制器如下所示:

@interface NewComputerViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>

所以我使用UITableView 来显示数据。

当视图加载时,我使用顶部导航栏中的按钮来运行函数loadStuff 在字典中加载一些内容。

我的问题:如何从 loadStuff 函数(属于视图控制器)重新填充该视图控制器中的表视图

【问题讨论】:

    标签: iphone objective-c uitableview


    【解决方案1】:

    您始终可以使用[tableView reloadData] 方法!

    但是,如果您在本地存储了一些数据并从某个服务器加载新内容,那么您可以选择:

    [tableView beginUpdates];
    [tableView insertRowsAtIndexPaths:*arrayOfIndexPaths* withRowAnimation:*rowAnimation*];
    [tableView endUpdates];
    

    如果你想删除现有的行,你可以使用

    [tableView beginUpdates];
    [tableView deleteRowsAtIndexPaths:*arrayOfIndexPaths* withRowAnimation:*rowAnimation*];
    [tableView endUpdates];
    

    【讨论】:

    • 什么是数组索引路径我正在使用 mutabledictionary 表数据,我想从字典中删除一个对象并更新 tableview
    【解决方案2】:

    尝试使用[tableView reloadData];(其中 tableView 是您的实例变量的名称)

    【讨论】:

    • @Emil:我只是希望有一天没人尝试。 ;)
    • 尽管大多数机器上什么都不会发生,现在几乎每个操作系统都有一个块.. 可惜:P
    • @sudorm-rf 和 &Emil:我刚刚在我的 Mac 上尝试过。它什么也不做。 (为什么?因为没有文件名或任何可以通过文件名扩展来扩展的东西。而且因为使用了-f,所以不会显示错误消息,命令只是以零返回码结束。)
    • 有些男人只想看着这个世界燃烧;P
    • @sudorm-rf 嗨,我是 Linux 新手。请你解释一下你的用户名 linux 终端命令是做什么的以及为什么它很有趣?
    【解决方案3】:

    甚至在重新加载时...

    [tableView reloadData];
    

    不会重新加载编辑的行/单元格,可能是tableView的IBOutlet没有连接到XIB文件中?

    这可能是原因之一。

    【讨论】:

      【解决方案4】:

      非常重要的是,您需要确保 tableview 的来源也反映了您的更改。

      当您删除某些内容时,如果您不先删除源中的项目,[tableView reloadData] 将不会执行任何操作。

      我在以下情况下遇到了这个问题: 我有一个表格视图,它显示了我的文档文件夹中的一些文件。然后我想删除一些文件,我在文档文件夹中删除了它们,但它们仍然出现在我的列表中。我在这篇文章中尝试了 [tableView reloadData] 和所有其他建议的答案,但仍然列出了这些文件。 当我关闭 tableview 并再次打开它时,列表很好。为什么? 好吧,因为我用我的所有文件填充了一个 NSArray -> 这是我的 tableView 的“源”。因此,当我删除文件时,我不仅需要删除文档文件夹中的文件,还需要将其从数组中删除。 -> 所以我制作了一个 NSMutableArray 来删除它。 然后调用 [tableView reloadData] 列表就可以了。 ;-)

      【讨论】:

        【解决方案5】:

        确保您设置datasource 并委托tableView。

        tableView.delegate = self;
        tableView.dataSource = self;
        

        确保在控制器中实现了正确的委托和数据源方法。

        在loadStuff方法中,调用:

        [tableView reloadData];
        

        在swift中,同样的:

        tableView.delegate = self
        tableView.dataSource = self
        tableView.reloadData()
        

        【讨论】:

          【解决方案6】:

          在函数的末尾loadstuff通过编写以下代码重新加载你的表的内容:

          [tableView reloadData];
          

          【讨论】:

            【解决方案7】:

            [tableView reloadData]; 其中 tableview 是你的 UITableView 的名称

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-04-23
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多