проблема с обработчиком действий UIBarButtonItems - PullRequest
0 голосов
/ 24 июня 2011

У меня очень глупая проблема с кодом для кнопок на панели инструментов. Я использую следующий код, и у меня уже есть функции обработчика действий в коде, но всякий раз, когда я нажимаю на кнопки, я получаю сообщение об ошибке: "- [UIWebView имя_функции]: нераспознанный селектор отправлен на экземпляр 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 ]

1 голос
/ 24 июня 2011

Это, вероятно, из-за этой строки,

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

Вы сделали цель self.webViews, но я думаю, что вы имели в виду self.

0 голосов
/ 24 июня 2011

Target of target: action: pair - это объект, который реализует метод, указанный в параметре action:.Так что в этом случае ваша цель будет самостоятельной для каждой из этих кнопок.

...