Толкая нулевой видовой контроллер на цель - PullRequest
0 голосов
/ 18 марта 2012

Я видел другие посты, связанные с этой темой, но у меня возникли проблемы с расшифровкой, как это относится к моей проблеме. Цель моего проекта состоит в том, чтобы иметь 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];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...