Я получаю эту ошибку
[ResultViewController setSearchFields: IndexPath:]: нераспознанный селектор отправлен на экземпляр 0xc448840
У меня есть стек контроллера навигации, в котором я нахожусьиспользование делегатов для передачи информации в предыдущее представление в стеке навигации. Однако я думаю, что делаю что-то не так, когда объявляю делегата.
Мой стек навигации выглядит следующим образом.
view 0 (mainmenu)
-- view 1 (SearchViewController)
--- view 2 (ResultViewController) - where I set the delegate of the new view being loaded
---- View 3 (SubViewController) - this is where my delegates reside
Что я делаю, так это захожу в view1 и передаю информацию о делегате в это представление, но при этом я получаю эту ошибку ... Мне интересно, должен ли я установить делегата для представления 3 в представлении 1, где я заканчиваюдо передачи информации ... это правильно ??
Если так, о чем я должен думать при настройке делегата?Как мне вызвать это из представления 1
Вот так я настраиваю своего делегата в SubViewController
subvc.h
@protocol PassSubSearchData <NSObject>
@required
- (void) setSearchFields:(NSArray *)modArray IndexPath:(NSIndexPath *)modIndexPath;
@end
@interface VehicleSubResultViewController : UITableViewController <NSXMLParserDelegate> {
//..
//Delegate for passing Mod and SubMod data back to VehicleSearchViewController
id <PassSubSearchData> delegate;
//..
//Delegate for passing Mod and SubMod data back to VehicleSearchViewController
@property (strong) id delegate;
subvc.m
#pragma mark - Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//Access selected cells content (cell.textLabel.text)
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
//Predicates restrict the values that will be returned from the query.
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K like %@",@"SUB",cell.textLabel.text];
filterArray = [parsedDataArrayOfDictionaries filteredArrayUsingPredicate:predicate];
[[self delegate] setSearchFields:tempModArray IndexPath:tempModIndexPath];
//This pops to the View 1 - SearchViewController
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:1] animated:YES];
}
Тогда В моем SearchViewController так я настраиваю делегаты
searchvc.h
#import "SubViewController.h"
@interface SearchViewController : UITableViewController <PassSubSearchData> {
//..
searchvc.m
- (void) setSearchFields:(NSArray *)modArray IndexPath:(NSIndexPath *)modIndexPath
{
modSearchObjectString = [[modArray valueForKey:@"MOD"] objectAtIndex:0];
modSearchIndexPath = modIndexPath; // Sets the selected IndexPath from the subview
NSLog(@"%@", modSearchObjectString);
NSLog(@"%@", modResultIndexPath);
[self.tableView reloadData];
}
Это в значительной степени подводит итог ... извините за задержку.