доступ к функции, определенной в другом классе, с использованием метода делегата - PullRequest
0 голосов
/ 02 сентября 2011
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

NSLog(@"didselectrowatindexatpath");

Place *placeAtIndex = (Place *)[appDelegate.PlacesArray objectAtIndex:indexPath.row];

NSLog(@"required lat long is %f, %f ", placeAtIndex.PlaceLatitude, placeAtIndex.PlaceLongitude);



returnToMapDelegate = (CortesViewController *)[[UIApplication sharedApplication] delegate];



[returnToMapDelegate showAddress];  


}


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath  is Called in PlacesViewController.m and Function "showaddress" is defined in CortesViewController.h. 

Я получаю сообщение об ошибке "Завершение работы приложения из-за необработанного исключения

'NSInvalidArgumentException', reason: '-[CortesAppDelegate showAddress]: unrecognized selector sent to instance 0x146ce0'"

в строке

returnToMapDelegate = (CortesViewController *)[[UIApplication sharedApplication] delegate];

Я успешно использовал следующий метод делегата в коде.

CortesAppDelegate *appDelegate = (CortesAppDelegate *)[[UIApplication sharedApplication] delegate];
      [appDelegate somefunction] ;

Но когда я попробовал то же самое для CortesViewController, приложение вылетает. Я новичок в iOS. Возможно, я упускаю очень простой момент.

Может кто-нибудь сказать мне, что не так с кодом?

Заранее спасибо за помощь

1 Ответ

1 голос
/ 02 сентября 2011

Проблема в следующем: метод [[UIApplication sharedApplication] delegate]; возвращает объект класса CortesAppDelegate.Таким образом, вы не можете вызвать showAddress, как это определено в CortesViewController

...