2012-03-23 5 views
2

Я с помощью facebook IOS SDK установки учебника: https://developers.facebook.com/docs/mobile/ios/build/окна приложений, как ожидается, иметь контроллер представления корня в конце запуска приложения

После Шаг 4: Добавление Выйти на свой App,

I получить пустой белый экран на 5,1 тренажере (Xcode 4.3.2) и консоль выводится сообщение:

окна приложений, как ожидается, имеют контроллер представления корня в конце запуска приложения

EDIT-1

Спасибо за ваши ответы; При создании приложения я выбрал шаблон «Single View Application». В MainStoryBoard.storyboard я создал объект и назначил ему класс MyGreatIOSAppAppDelegate. Перетащите вывод viewController этого объекта в контроллер просмотра.

здесь код в MyGreatIOSAppAppDelegate.m

#import "MyGreatIOSAppAppDelegate.h" 
#import "xxxViewController.h" 

@implementation IJSAppDelegate 

@synthesize window = _window; 
@synthesize viewController = _viewController; 
@synthesize facebook; 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Override point for customization after application launch. 
    self.window.rootViewController = self.viewController; 
    [self.window makeKeyAndVisible]; 

    // Add the logout button 
    UIButton *logoutButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    logoutButton.frame = CGRectMake(40, 40, 200, 40); 
    [logoutButton setTitle:@"Log Out" forState:UIControlStateNormal]; 
    [logoutButton addTarget:self action:@selector(logoutButtonClicked) 
      forControlEvents:UIControlEventTouchUpInside]; 
    [self.viewController.view addSubview:logoutButton];  

    facebook = [[Facebook alloc] initWithAppId:@"id" andDelegate:self]; 

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    if ([defaults objectForKey:@"FBAccessTokenKey"] 
     && [defaults objectForKey:@"FBExpirationDateKey"]) { 
     facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"]; 
     facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"]; 
    } 
    if (![facebook isSessionValid]) { 
     [facebook authorize:nil]; 
    } 
    return YES; 
} 


- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url 
    sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
    return [facebook handleOpenURL:url]; 
} 

- (void)fbDidLogin { 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"]; 
    [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"]; 
    [defaults synchronize]; 
} 

// Method that gets called when the logout button is pressed 
- (void) logoutButtonClicked:(id)sender { 
    [facebook logout]; 
} 

- (void) fbDidLogout { 
    // Remove saved authorization information if it exists 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    if ([defaults objectForKey:@"FBAccessTokenKey"]) { 
     [defaults removeObjectForKey:@"FBAccessTokenKey"]; 
     [defaults removeObjectForKey:@"FBExpirationDateKey"]; 
     [defaults synchronize]; 
    } 
} 

@end 
+0

Не могли бы вы опубликовать 'MyGreatIOSAppAppDelegate.m'. Вы можете просто отредактировать это сообщение, чтобы сделать это. – Drew

+0

Вы решили эту проблему? У меня такая же проблема, если вы это сделаете, будет хорошо, если вы опубликуете решение. – Hosni

+0

Какую версию Xcode вы используете? Различные версии имеют разные шаблоны проектов. Можете ли вы опубликовать 'main.c' и ваш делегат делегата приложения? И список объектов в вашем раскадровке и 'Info.plist'? – Jim

ответ

6

Убедитесь, что у вас есть следующие строки в application:didFinishLaunchingWithOptions: метод вашего приложения делегата:

self.window.rootViewController = self.viewController; 
+0

Привет @jonkroll, я использую self.window.rootViewController = self.viewController; Я не уверен, но что-то не хватает в MainStoryboard.storyboard, я создал объект и назначил ему класс MyGreatIOSAppAppDelegate. Перетащите вывод viewController этого объекта в контроллер просмотра. – jqueryEnthusiast

0

Убедитесь, что вы установите window.rootviewcontroller = ваш _navigationviewcontroller. Как это: (все это происходит в файле AppDelegate.cs)

общественный частичный класс AppDelegate: UIApplicationDelegate { деклараций // класс уровня UIWindow _window; UINavigationController _navigationcontroller;

// 
    // This method is invoked when the application has loaded and is ready to run. In this 
    // method you should instantiate the window, load the UI into it and then make the window 
    // visible. 
    // 
    // You have 17 seconds to return from this method, or iOS will terminate your application. 
    // 

    public override bool FinishedLaunching (UIApplication app, NSDictionary options) 
    { 
     // create a new window instance based on the screen size 
     _window = new UIWindow (UIScreen.MainScreen.Bounds); 

     // If you have defined a view, add it here: 
     // window.AddSubview (navigationController.View); 
     _navigationcontroller = new UINavigationController(); 
     _navigationcontroller.PushViewController(new SplashViewController(),false); 
     **_window.RootViewController = _navigationcontroller;** 

     // make the window visible 



    _window.MakeKeyAndVisible(); 

     return true; 
    } 
} 

}

+1

Вы, вероятно, не должны предполагать, что большинство разработчиков iOS используют Xamarin ... –

+0

Это хорошее предложение Aaron V .. – mrMagik3805

+0

jqueryEnthusiast, вы получили окончательное решение по вашему запросу? – mrMagik3805

Смежные вопросы

 Смежные вопросы