2014-09-18 4 views
0

У меня есть приложение на основе документа. Предполагается, что это 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. Кажется, я просто не могу назвать методы экземпляра? Что я здесь делаю неправильно?

+0

Эти 2 устройства просмотра связаны в контроллере навигации? Вы пытались восстановить PdfViewerController в _tableViewSelectionDidChange: _? –

+0

Нет, они не связаны в контроллере навигации. Нужно ли им быть? На данный момент я просто пытаюсь получить взаимодействие между двумя рабочими. Я просто попробовал переустановить его, до сих пор не повезло. – Pancakes

+0

Я все еще пытаюсь понять, что вы там делаете. Вы представили PdfViewerController модально? Что происходит, когда вы вызываете эту строку _ [pdfViewerController loadFromPath: selectedPath]; _? –

ответ

0

Вы не представляя pdfViewerController

//Instantiate pdfViewerController from xib/storyboard 
PdfViewerController *pdfViewerController = [[PdfViewerController alloc] initWithNibName:@"PdfViewerController" bundle:nil]; 
//Present it modally 
[self presentViewController:pdfViewerController animated:YES completion:nil]; 

Если вы используете раскадровки: Use this url

Надежда должна сделать вещь!

+0

Извините, я не знаю, почему я отметил это под IOS, потому что я не на IOS. Я удалил тег. Я полагаю, что этот совет относится к IOS? Потому что я понятия не имею, что такое раскадровка ... – Pancakes