【问题标题】:Tableview reload data problem iphone sdkTableview重新加载数据问题iphone sdk
【发布时间】:2011-03-04 10:50:30
【问题描述】:

我有一个 A 类,它是 uitableviewcontroller 的子类,还有一个 B 类,它实际显示我的 tableview 及其内容是 A 的子类。

有一个 xml 解析器可以解析我的 xml 并将内容存储在应用程序委托的 nsmutablearray 中。现在,我将此委托数组提取到 B 类中的本地 nsmutablearray 中,以最小化两个类(即委托和 B 类)之间的通信并显示它。

在 A 类中满足特定条件后,我正在调用 xml 解析器来重新填充委托数组,并且正在调用 B 类的 tableview 重新加载方法。问题是当我调用 tableview 的重新加载数据时,会调用 B 类的委托方法。但在此之前,我需要在 B 类的本地数组中抓取这个委托数组。我该怎么做?

有人可以帮忙吗?

提前感谢。

【问题讨论】:

    标签: iphone uitableview reload nsnotification nsnotificationcenter


    【解决方案1】:

    建议您在 xmlParser 更新数组时发布通知。对象 B(B 类的实例)可以注册通知。 Object B 在收到通知后可以在 Class B 的实现中调用 [[self tableView] reloadData] 之前重新加载数组。

    【讨论】:

    • 我可以从超类访问子类的属性吗?如果是,如何?
    • 另外,我可以在超类中发送通知并在子类中捕获它吗?
    • 任何对象要访问另一个对象的属性,您需要从一个对象向另一个对象发送消息。有很多方法可以通过导航对象之间的关系来获取接收对象的引用。您正在混淆继承(is a)和组合(has a)的重要概念。一个常见的场景是对象 A(ClassA 的实例)创建对象 B(ClassB 的实例)并通过将 A 的属性设置为 B 来保持对 B 的引用。A 可以向 B 发送消息。如果 ClassB 是 ClassA 的子类,除非B 的属性设置为 A,(例如委托),B 无法向 A 发送消息。
    • 谷歌“nsnotificationcenter 教程”。通知用于在对象之间发送消息。这是一种非常强大的机制,它允许对象相互协作而不必保持相互引用。 NSNotification 的发送者可以被接收者询问。此外,userInfo 属性 NSNotfication 应该包含接收者完成其任务所需的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    相关资源
    最近更新 更多