【问题标题】:How can I get a method to call in a class while the user is in a view of another class?当用户在另一个类的视图中时,如何获得一个方法来调用一个类?
【发布时间】:2010-12-13 06:41:13
【问题描述】:

我有一个基于 tabBar 和 tableViews 的 iPhone 应用程序。我希望用户能够单击一个选项卡并访问用于过滤初始 tableView 中的数据的选项。

我遇到的问题是,当用户选择过滤条件时,我希望更新主表(不可见)。这很重要的原因是我想显示在导航栏中过滤时表格中仍有多少单元格。

目前在我的rootViewController类的viewWillAppear方法中调用了过滤主表的方法(-handleFilter)。如何从我的“searchOptions”类中调用此方法?

感谢您的帮助!

【问题讨论】:

    标签: iphone objective-c methods call


    【解决方案1】:

    听起来您在模型和控制器之间混淆了太多(假设您遵循 MVC 设计模式)。除了主表之外的其他控制器应该能够自己查询模型以显示计数信息,而无需询问主表控制器。

    不过,我可能会误解一些东西,更多关于您正在使用的数据以及如何在附加到其他标签栏项目的控制器中过滤这些数据的信息会有所帮助。

    【讨论】:

      【解决方案2】:

      最直接的方法是给选项控制器一个指向列表控制器的指针。然后就可以直接调用该方法了。

      其他选项包括在某个全局对象(例如您的应用程序委托)上定义方法/属性以从应用程序的其他位置访问列表控制器,以及使用更分散的机制(例如 NSNotificationCenter)来传递该信息(而不是方法调用),或者依赖模型本身在它发生变化时通知所有访问它的控制器(可能使用键值观察,或显式委托协议)。

      【讨论】:

      • 如何给一个控制器一个指向另一个控制器的指针?感谢您的帮助!
      • 在控制器子类上定义一个属性来保存引用,并在实例化控制器时设置它。例如。 (请注意,这不一定是最佳选项,但它是让您调用该方法的最直接途径。)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多