Я уверен, что есть простой способ решить эту проблему, но я не могу понять.
Я получил TabBarViewController с несколькими представлениями. В некоторых представлениях я загружал таблицы с содержимым на основе XML.
Мой XML Parser работает нормально, я тестировал его раньше в отдельном Projectfile.
Проблема в том, что мой TableViewController, для которого я создал XMLAppDelegate для управления синтаксическим анализом моих xml-файлов, по-прежнему отправляет методы в основной файл делегирования моего проекта.
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MainAppDelegate slices]: unrecognized selector sent to instance 0x6d1fd00'
Как показано в сообщении об ошибке, он пытается отправить его в мой MainAppDelegate вместо XMLAppDelegate.
Я реализовал XMLAppDelegate в моих файлах контроллера и инициализировал делегата следующим образом:
Файл .h моего контроллера
#import <UIKit/UIKit.h>
@class XMLAppDelegate, NewsDetailViewController;
@interface NewsViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource> {
IBOutlet UITableView *newsTableView;
XMLAppDelegate *appDelegate;
NewsDetailViewController *ndvController;
}
@end
Файл .m моего контроллера
- (void)viewDidLoad {
[super viewDidLoad];
// self.navigationItem.rightBarButtonItem = self.editButtonItem;
appDelegate = (XMLAppDelegate *)[[UIApplication sharedApplication] delegate];
self.title = @"Slices";
}
Контроллер загружается в TabBarView в виде отдельного файла .xib.
В этом nib-файле я подключил делегат и источник данных к моему XMLAppDelegate.
Я все еще получаю эту ошибку в журнале, и приложение вылетает, когда я пытаюсь переключиться на вкладку, если в ней нужен TableViewController.
Надеюсь, вы понимаете мою проблему. Может быть, кто-то может сказать мне, что я делаю неправильно, устанавливая Delegate для моего XMLAppDelegate.
EDIT:
Чтобы объяснить, что я хочу сделать:
У меня есть класс XMLParser для анализа файла, класс Slice для хранения элементов и XMLAppDelegate. Из этих файлов я получаю свои результаты XML, хранящиеся в массиве с именем «ломтики».
Чтобы использовать элементы массива для отображения его в виде таблицы или текстовой метки, я подключил TableViewController к XMLAppDelegate (который анализирует мой XML-документ с использованием файла XMLParser и сохраняет данные в массиве).
Элементы этого массива ранее объявлялись в файлах как строки, подобные этой
@property (nonatomic, readwrite) NSInteger sliceID;
@property (nonatomic, retain) NSString *image;
@property (nonatomic, retain) NSString *title;
@property (nonatomic, retain) NSString *text;
Но, как я уже сказал, парсер работает.
Я думаю, что моя проблема, кажется, в том, что я запросил appDelegate.slices, но селектор не мой XMLAppDelgate. В сообщении об ошибке говорится, что используется главный делегат, у которого нет свойств файла делегата xml.
TabView загружает NewsViewController, который вызывает массив в XMLAppDelegate.
Я реализовал файлы, подключил делегат к TableView в качестве источника данных и делегата, но, тем не менее, кажется, что он принимает основного делегата.
Это сводит меня с ума.
Проект представляет собой профиль компании для хорошего Wellness Motel.
Я получаю содержимое из CMS в виде XML-файлов, и мне необходим доступ к ним из XMLAppDelegate, который доставляет содержимое сайтов.
Надеюсь, вы понимаете мой плохой английский. ;)