2014-11-16 2 views
0

Я создаю тестовое приложение с использованием API Facebook, и я пытаюсь просто добавить FBLoginView к представлению при изучении Single Sign On. Я внимательно следил за документацией в Facebook и по какой-то причине, несмотря на тщательное выполнение этих шагов, а также на пример кода, который предоставляется, не может понять, почему FBLoginView не появляется при запуске приложения.FBLoginView не отображается при использовании раскадровки в iOS 8

  1. Я добавил рамки Facebook для моего проекта
  2. Как ни странно, профиль Picture View появляется (FBProfilePictureView)
  3. Я изменил пользовательский класс так, чтобы он FBLoginView

Это соответствующий код, который у меня есть в файле AppDelegate.m:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    // Override point for customization after application launch. 
    [FBLoginView class]; 
    [FBProfilePictureView class]; 

    return YES; 
} 

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 

    return [FBAppCall handleOpenURL:url sourceApplication:sourceApplication]; 
} 

и это co де что у меня есть в файле ViewController.m:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    [self toggleHiddenState:NO]; 
    self.loginStatus.text = @""; 
    self.loginButton.readPermissions = @[@"public_profile", @"email"]; 
} 

- (void)toggleHiddenState:(BOOL)shouldHide { 

    self.userName.hidden = shouldHide; 
    self.email.hidden = shouldHide; 
    self.profilePictureView.hidden = shouldHide; 
    self.loginStatus.hidden = shouldHide; 
    self.loginButton.hidden = shouldHide; 
} 

Здесь также скриншот моего раскадровки в интерфейсе строителя:

enter image description here

Может кто-нибудь увидеть, что это я делаю неправильно ?

Заранее благодарим всех, кто отвечает.

+0

Вы знаете, с Xcode 6 вы можете отлаживать иерархии просмотра, чтобы найти недостающий вид? –

ответ

2
FBLoginView *loginview = [[FBLoginView alloc] init]; 
loginview.frame = CGRectOffset(loginview.frame, 5, 5); 
#ifdef __IPHONE_7_0 
#ifdef __IPHONE_OS_VERSION_MAX_ALLOWED 
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_7_0 
    if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)]) { 
     loginview.frame = CGRectOffset(loginview.frame, 5, 25); 
    } 
#endif 
#endif 
#endif 
    loginview.delegate = self; 

    [self.view addSubview:loginview]; 

    [loginview sizeToFit]; 

Добавьте этот код в viewDidLoad

Надеется, что это решает проблему ...

+0

Привет, Сарат, большое спасибо за ваш ответ. Можете ли вы объяснить, почему работает ваш код? В вашем решении я программно добавляю FBLoginView к основному виду, и он появляется так, как должен. Почему это представление не появляется, когда я делаю это в IB? Другая проблема, которую я обнаружил, - это когда я комментирую блок кода внутри операторов: # if/# endif, появляется BOTH FBLoginView (ваш, а также тот, который я добавил в IB). Любая идея почему? Еще раз спасибо за вашу помощь! – syedfa

1

С помощью Xcode 6 вы можете отлаживать свою иерархию просмотров и точно видеть, что происходит (iOS 8 и выше). Here - это сообщение о том, как это можно сделать.

Это означает, что ваши ограничения, вероятно, неверны для loginView. Попробуйте добавить явное ограничение ширины и высоты перед отладкой. Если это не удается свернуться в иерархию, чтобы найти FBLoginView.

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