UIBarButtonItems的动作处理程序的问题

时间:2011-06-24 02:26:05

标签: ios action uibarbuttonitem

我的工具栏中的按钮代码面临着一个非常愚蠢的问题。我使用以下代码,我已经在代码中有动作处理函数,但每当我点击按钮时,我收到错误:“ - [UIWebView function_name]:无法识别的选择器发送到实例0x .... “任何人都可以帮忙吗?感谢。

<。>在.h文件中:

- (void) goBackHandler;
- (void) goForwardHandler;
- (void) goSafari;
<。>在.m文件中:

UIBarButtonItem *backButton=[[[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"back.png"] style:UIBarButtonItemStylePlain target:self action:@selector(goBackHandler)]autorelease];

UIBarButtonItem *forwardButton=[[[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"forward.png"] style:UIBarButtonItemStylePlain target:self.webViews action:@selector(goForwardHandler) ] autorelease];    

UIBarButtonItem *safariButton=[[[UIBarButtonItem alloc] initWithTitle:@"Safari" style:UIBarButtonItemStyleBordered target:self action:@selector(goSafari)]autorelease];

UIBarButtonItem *flex=[[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]autorelease];

NSArray *arrayOfButtons=[[[NSArray alloc] initWithObjects:backButton,flex,safariButton,flex,forwardButton, nil]autorelease];

[self setToolbarItems:arrayOfButtons];





- (void) goBackHandler
{

if ([self.webViews canGoBack])
{
    [self.webViews goBack];
}

}

- (void) goForwardHandler
{
if ([self.webViews canGoForward])
{
    [self.webViews goForward];
}
}

- (void) goSafari
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[self.webViews stringByEvaluatingJavaScriptFromString:@"window.location"]]];
}

2 个答案:

答案 0 :(得分:1)

可能是因为这条线,

UIBarButtonItem *forwardButton=[[[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"forward.png"] style:UIBarButtonItemStylePlain target:self.webViews action:@selector(goForwardHandler) ] autorelease]; 

您已将self.webViews作为目标,但我认为您的意思是self

答案 1 :(得分:0)

目标的目标:action:pair是实现action:参数中指定的方法的对象。因此,在这种情况下,您的目标将是每个按钮的自我。