Я видел другие посты, связанные с этой темой, но у меня возникли проблемы с расшифровкой, как это относится к моей проблеме. Цель моего проекта состоит в том, чтобы иметь 3 табличных представления, 1 корневое, затем второе, которое помещается в стек после выбора элемента в корне, а затем третье добавляется в стек после выбора элемента во втором представлении.
Я попытался сделать это, создав программный контроллер навигации с корнем FirstView. Затем включил второй контроллер вида в xib FirstView, чтобы поместить SecondView в стек. Затем третий контроллер вида в SecondView, чтобы поместить третий вид в стек.
В результате я получаю FirstView для отображения и правильно помещаю SecondView в стек. Затем, когда я выбираю элемент в таблице SecondView, я получаю следующую ошибку при попытке перенести ThirdView в стек: «Приложение пыталось выдвинуть ноль контроллера представления на цель».
У меня есть контроллеры, подключенные к выходам для второго и третьего контроллеров, поэтому я не уверен, как это отличается между этими двумя и почему третий контроллер равен нулю. Прикрепленный ниже код для всех ссылок на push-представления (извините, если это много)
TestAppDelegate.h
#import <UIKit/UIKit.h>
@class RootViewController;
@interface TestAppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UINavigationController *navigationController;
@property (strong, nonatomic) UIWindow *window;
@end
TestAppDelegate.m
#import "FirstView.h"
#import "TestAppDelegate.h"
@implementation TestAppDelegate
@synthesize window = _window;
@synthesize navigationController;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UIViewController *rootController = [[FirstView alloc] initWithNibName:@"FirstView" bundle:nil];
navigationController = [[UINavigationController alloc] initWithRootViewController:rootController];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self.window addSubview:navigationController.view];
[self.window makeKeyAndVisible];
return YES;
}
FirstView.h
#import <UIKit/UIKit.h>
@class SecondView;
@interface FirstView : UITableViewController
@property (nonatomic, strong) NSMutableArray *mList;
@property (nonatomic, strong) IBOutlet SecondView *secondController;
@end
FirstView.m
#import "FirstView.h"
#import "SecondView.h"
#import "TestAppDelegate.h"
@implementation FirstView
@synthesize mList;
@synthesize secondController;
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self.navigationController pushViewController:self.secondController animated:YES];
}
SecondView.h
#import <UIKit/UIKit.h>
@class ThirdView;
@interface SecondView : UITableViewController
@property (nonatomic, strong) NSMutableArray *secondList;
@property (nonatomic, strong) IBOutlet ThirdView *thirdController;
@end
SecondView.m
#import "ThirdView.h"
#import "SecondView.h"
#import "FirstView.h"
#import "TestAppDelegate.h"
@implementation SecondView
@synthesize secondList;
@synthesize thirdController;
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self.navigationController pushViewController:self.thirdController animated:YES];
}