在特定类中调用方法

时间:2010-07-05 07:32:48

标签: objective-c xcode methods uibarbuttonitem

我目前正在这样做,在我的导航栏上添加一个按钮来调用SwitchViews方法。

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

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

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

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

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

由于

1 个答案:

答案 0 :(得分:0)

从理论上讲,将target设置为nil根本不起作用,但也许正如你所说,它可以用它做一些聪明的东西。 设定目标显然会导致响应者链中发送的操作。不知道那个。

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

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

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

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

以上假设您已为@property(您想要的THATCLASS)正确设置了target,例如

@property (nonatomic, retain) ExampleClass *THATCLASS;