У меня есть приложение на основе документа. Предполагается, что это PDFViewer, где пользователь выбирает PDF-файл из левой таблицы и загружается в PDF-представление справа.Контроллеры просмотра не разговаривают друг с другом
В моем классе документа я создаю экземпляр моего WindowController, который является владельцем файла моего Document.xib, и сделать это контроллер окна, как это:
- (id)init
{
self = [super init];
if (self) {
controller = [[WindowController alloc] initWithWindowNibName:@"Document"]; }
return self;
}
-(void)makeWindowControllers {
[self addWindowController: controller];
}
My Window Controller затем создает экземпляр мой TableViewController, который контролирует мою NSTableView:
@implementation WindowController
-(id)initWithWindowNibName:(NSString *)window {
self = [super initWithWindowNibName:window];
return self;
}
-(void)windowDidLoad
{
tableViewController = [[TableViewController alloc] init];
}
@end
TableViewController имеет связную выход к моей NSTableView.
Затем TableViewController управляет PDFViewer, имея экземпляр PDFViewerController, который был alloc'd и init'd в его методе init. Класс PDFViewerController также имеет подключенный выход к моему PDFView.
PDFViewerController имеет этот метод для загрузки PDF:
-(void) loadFromPath: (NSString *) path{
NSLog(@"PDFController trying to load path %@", path);
PDFDocument *pdfDoc = [[PDFDocument alloc] initWithURL: [NSURL fileURLWithPath: path]];
[pdfView setDocument: pdfDoc];
}
Когда выбор просмотр таблицы изменений следует сказать loadFromPath: от экземпляра PDFViewerController, чтобы загрузить PDF в поле зрения, как это:
-(void) tableViewSelectionDidChange:(NSNotification *)notification{
// If the user clicks another file in the list we should let everyone know the path
selectedPath = [[list objectAtIndex: [[notification object] selectedRow]] path];
NSLog(@"trying to load path %@", selectedPath);
[pdfViewerController loadFromPath: selectedPath];
}
Однако мой PDFViewer не отвечает вообще. Я не могу понять, почему ... У меня все связано. Если я скажу, чтобы загрузить PDF-файл в метод init PDFViewerController, он отлично работает, то же самое для TableViewController. Кажется, я просто не могу назвать методы экземпляра? Что я здесь делаю неправильно?
Эти 2 устройства просмотра связаны в контроллере навигации? Вы пытались восстановить PdfViewerController в _tableViewSelectionDidChange: _? –
Нет, они не связаны в контроллере навигации. Нужно ли им быть? На данный момент я просто пытаюсь получить взаимодействие между двумя рабочими. Я просто попробовал переустановить его, до сих пор не повезло. – Pancakes
Я все еще пытаюсь понять, что вы там делаете. Вы представили PdfViewerController модально? Что происходит, когда вы вызываете эту строку _ [pdfViewerController loadFromPath: selectedPath]; _? –