RootViewController не се зарежда в NIB

Опитвам се да следвам примера за функции за библиотеката Inferis/ViewDeck тук. Въпреки това Root View Controller се зарежда, но не преминава към моя изглед за влизане. Използвам изгледа за влизане вместо изгледа за избор на колода.

APAppDelegate.h

#import <UIKit/UIKit.h>
@class LoginController;

@interface APAppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@end

APAppDelegate.m

#import "APAppDelegate.h"
#import "RootViewController.h"

@implementation APAppDelegate

@synthesize window = _window;


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    RootViewController *rootController = (RootViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"RootViewController"];
    self.window.rootViewController = rootController;//[[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
    [self.window makeKeyAndVisible];
    return YES;
}

Трябваше да използвам MainStoryboard за моя, защото аз използвам сториборд, а той използва xib. Опитвайки се да initwithNibName в appdelegate, получавах грешка, че RootViewController не съществува.

RootViewController.h

#import <UIKit/UIKit.h>

@interface RootViewController : UIViewController
{

}

@property (nonatomic, retain) IBOutlet UIView *loginView;
@property (nonatomic, retain) UINavigationController *navController;

@end

RootViewController.m

#import "RootViewController.h"
#import "IIViewDeckController.h"
#import "LoginController.h"
#import "SideMenuView.h"
#import "APCustomerViewController.h"

@implementation RootViewController
@synthesize loginView = _loginView;
@synthesize navController = _navController;
- (void)viewDidLoad
{
    NSLog(@"RootViewController viewDidLoad");
    [super viewDidLoad];

    // Override point for customization after application launch.
    LoginController *loginController = [[LoginController alloc] initWithNibName:@"LoginController" bundle:nil];

    self.navController = [[UINavigationController alloc] initWithRootViewController:loginController];
    self.navController.navigationBar.tintColor = [UIColor darkGrayColor];

    self.navController.view.frame = self.loginView.bounds;
    [self.loginView addSubview:self.navController.view];
    NSLog(@"End RootViewController viewDidLoad");
}

LoginController.h

#import <UIKit/UIKit.h>
@class KeychainItemWrapper;
@class DataClass;

@interface LoginController : UITableViewController <UITextFieldDelegate>
{
    IBOutlet UITextField *userField;
    IBOutlet UITextField *passwordField;
    IBOutlet UISwitch *saveLogin;
    UIActivityIndicatorView *activitySpinner;
    KeychainItemWrapper *keychain;
    DataClass *dataObj;

    id delegate;
}

@property (nonatomic, retain) IBOutlet UITextField *userField;
@property (nonatomic, retain) IBOutlet UITextField *passwordField;
@property (nonatomic, retain) IBOutlet UISwitch *saveLogin;
@property (nonatomic, retain) id delegate;

@end

LoginController.m

- (void)viewDidLoad
{
    NSLog(@"LoginController viewDidLoad");
    [super viewDidLoad];
    [userField setDelegate:self];
    [passwordField setDelegate:self];
    TextFieldDelegate *myDelegate = [[TextFieldDelegate alloc] init];
    [self setDelegate:myDelegate];
    //set the delegate's currentViewController property so that we can add a subview to this View. 


    activitySpinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
    activitySpinner.frame = CGRectMake(0.0, 0.0, 40.0, 40.0);
    activitySpinner.center = self.view.center;
    [self.view addSubview:activitySpinner];

    keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"APLogin" accessGroup:nil];
    [userField setText:[keychain objectForKey:(__bridge id)kSecAttrAccount]];
    [passwordField setText:[keychain objectForKey:(__bridge id)kSecValueData]];

    if ([userField text] != @"" && [passwordField text] != @"") {
        [saveLogin setOn:YES];
    }

    dataObj = [DataClass getInstance];

    // Do any additional setup after loading the view from its nib.
}

Регистрационен файл

GNU gdb 6.3.50-20050815 (Apple version gdb-1708) (Thu Nov  3 21:59:02 UTC 2011)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin".sharedlibrary apply-load-rules all
Attaching to process 18487.
2012-01-20 11:56:11.586 Appointment-Plus[18487:f803] RootViewController viewDidLoad
2012-01-20 11:56:11.589 Appointment-Plus[18487:f803] End RootViewController viewDidLoad

Имам всичките си имена на класове в перата на сценария, същите като файловете на класовете. Както можете да видите, RootViewController viewDidLoad работи напълно, но LoginController не работи изобщо. Опитвам се да накарам LoginController да стартира от RootViewController.

Крайната ми цел е да получа менюто в стил facebook, което се плъзга, но само на някои страници. Страниците, които ще използват менюто, са след LoginController.

1.) Потребителят отваря приложението и получава страницата за вход 2.) Потребителят влиза и получава главната страница с менюто в стил на facebook ios 3.) Когато потребител кликне върху елемент, той може да отиде на нова страница, която няма да има страничната меню.

Доколкото разбирам, е необходим RootViewController, за да се управлява всичко това.


person Bot    schedule 20.01.2012    source източник


Отговори (1)


Реших да не използвам библиотеката и просто използвах контролер за root изглед и създадох мое собствено слайд меню.

person Bot    schedule 24.01.2012