【问题标题】:Calling a method in a specific class调用特定类中的方法
【发布时间】:2010-07-05 07:32:47
【问题描述】:

我目前这样做是为了向我的导航栏添加一个按钮来调用 SwitchViews 方法。

    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back to App" 
                                                                  style:UIBarButtonItemStyleBordered
                                                                 target:nil
                                                                action:@selector(switchViews:)];
self.navigationItem.leftBarButtonItem=backButton;
[backButton release];

这个方法恰好在另一个类(SwitchViewController)中,但它正在工作,因为我猜方法调用会通过响应者链,直到它在 SwitchViewController 中找到它。

有什么方法可以将目标设置为我的班级而不是零?

猜猜这将使代码更易于阅读、调试和维护。

我相信对于一些比我更有经验的程序员来说,这是一个简单的答案......

谢谢

【问题讨论】:

  • 谢谢,不知道我能做到这一点,所以会马上做。

标签: objective-c xcode methods uibarbuttonitem


【解决方案1】:

从理论上讲,将target 设置为nil 应该根本不起作用,但也许它会像你说的那样做一些聪明的事情。 将目标设置为 nil 显然会导致在被发送到响应者链上的动作中。不知道。

要将其设置为您的类,您首先需要对所述类的引用。谁开那个班?应用程序委托?应用程序委托是否可以将该类的引用交给该类,因为它需要它?如果此类以编程方式初始化,您甚至可以调整 init 方法以获取新参数(类)。

上面的代码 sn-p 的方法是什么样的?它是一个初始化方法吗? viewDidLoad 方法?

如果它是一个 init 方法并且它是从一个 NIB 文件调用的(即它是 initWithCoder:),那么您最好的选择可能是直接从应用程序委托中获取引用,使用

((YOURAPPDELEGATE *)[[UIApplication sharedApplication] delegate]).THATCLASS

以上假设您已经为THATCLASS(这是您的预期target)正确设置了@property,例如

@property (nonatomic, retain) ExampleClass *THATCLASS;

【讨论】:

  • Hej Kalle 不确定我完全理解你所说的一切(不是你的错,我还没有真正赶上进度)。我有一个在我的 .m 文件中导入方法的类。这是一个没有笔尖的类,可以在两个视图之间切换,我从不创建它的实例,只需将其添加为子视图。根据 Apple 文档:“如果为零,则操作消息将向上传递到响应者链,在那里它可以由实现与选择器对应的方法的任何对象处理”感谢您的回答和问题。现在它正在工作,所以我会忍受它。 Ha en trevlig sommar!
  • 嗯,实际上我以前从未听说过 nil => 响应者链行为。也没见过。感谢您指出这一点,我会更新答案。至于原始问题,您只需在某处维护对 SwitchViewController 的引用,或者,您可以通过其父视图的子视图数组找到它。
  • 哦,很高兴 sommar på dig också! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-21
  • 1970-01-01
  • 2019-12-23
  • 1970-01-01
  • 2012-08-04
  • 2017-02-20
相关资源
最近更新 更多