【问题标题】:UITableView reloadDataUITableView 重载数据
【发布时间】:2011-03-22 12:54:47
【问题描述】:

我有一个包含 UITableView 的 UIViewController。

我正在尝试用从 XML 文件解析的数据填充此表。

TableView 第一次加载数据尚不可用。

重新加载此视图的最佳方法是什么?

解析完成后我尝试做一个self.TableView reloadData。

不幸的是,保存解析结果的 NSMutableArray 在 reloadData 期间被重置。

数组在 UIVivewController 中设置。

我应该将 NSMutablearray 设置为全局变量吗?

非常感谢

【问题讨论】:

    标签: iphone nsmutablearray


    【解决方案1】:

    数组应该是包含UITableView 的视图控制器的ivar(实例变量)。完成解析后,ivar 应该填充数据,并且您应该能够使用 [self.TableView reloadData] 毫无问题地填充 UITableView。确保您没有在任何委托或数据源回调中删除所有对象或重新初始化数组。

    【讨论】:

    • 我认为我的问题是我调用解析两次,因为它在视图加载时被触发。你是对的,我重新初始化了数组。我最初是在追求全局变量,但我认为这只是一个快速补丁。最后我不想解析两次。我需要设置一个标志来防止第二次解析或使用 NSNotificationCenter。
    【解决方案2】:

    不要让它成为全局变量,让它成为一个实例变量。如:

    @interface MyViewController : UIViewController {
        NSMutableArray* parsedDataArray;  //declare the array here
    }
    @end
    

    但除此之外,是的,在解析完成后调用reloadData 是合理的。只需修复代码以在调用reloadData 时不重置解析结果。

    【讨论】:

    • 你的意思是我应该创建某种标志来阻止解析运行多次?现在解析从 ViewDidLoad 事件开始。
    【解决方案3】:

    是的,将 NSMutableArray 作为该控制器文件的全局变量。

    确保你在持有表格视图的控制器中的 NSMutableArray 中获得价值。

    只需重新加载表格。

    问候, 夏姆

    【讨论】:

    • 它是一个实例变量,而不是全局变量。但是,是的,就是这样。
    猜你喜欢
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多