0

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

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

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

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

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

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

谢谢

4

1 回答 1

0

理论上,设置target应该nil根本不起作用,但正如你所说,它可能会做一些聪明的事情。 将 target 设置为 nil 显然会导致动作被发送到响应者链。不知道那个。

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

包含上述代码片段的方法是什么样的?它是一个初始化方法吗?viewDidLoad 方法?

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

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

以上假设您已经正确设置了@propertyfor THATCLASS(这是您的意图target),例如

@property (nonatomic, retain) ExampleClass *THATCLASS;
于 2010-07-06T10:03:30.767 回答