Причина, по которой ничего не происходит, заключается в том, что self.navigationController
- это nil
, возможно, потому, что вы никогда не устанавливали его. Ваши инстинкты хороши: когда «ничего не происходит», это почти всегда означает, что что-то является nil
, и причина № 1 для того, чтобы быть nil
, заключается в том, что вы не подключили это в IB.
Ваш рекурсивный дизайн показывает хорошее понимание работы контроллеров представления. Похоже, вы на правильном пути. Несколько незапрошенных советов, чтобы двигаться дальше. Вместо этого кода:
FirstViewController *fvController = [[FirstViewController alloc] initWithNibName:@"MainWindow" bundle:[NSBundle mainBundle]];
fvController.currentDirectory = currentDirectory;
Я рекомендую что-то похожее на это:
FirstViewController *fvController = [[FirstViewController alloc] initWithDirectoryPath:currentDirectory];
Вам, конечно, нужно будет написать -initWithDirectoryPath:
, чтобы позвонить -initWithNibName:bundle:
. Это выдвигает имя NIB внутри контроллера представления, который управляет им, позволяет сделать -currentDirectory
доступным только для чтения или личного доступа, чтобы никто не мешал ему за спиной контроллера представления, и, как правило, облегчает понимание и поддержку кода.