我在xcode的viewcontroller.swift中的一个按钮中编码 - 如何让它在故事板中显示?

时间:2016-06-23 17:53:22

标签: xcode swift facebook storyboard

具体来说,我将facebook的登录按钮编码到我的视图控制器文件中。但它没有出现在故事​​板中。我知道如何在故事板中创建一个按钮,然后通过右键单击拖动连接代码,但是当我尝试将其连接到两个并创建我的IBOutlet时,我似乎只是创建了两个不同的登录按钮。

如何让facebook登录按钮显示在故事板中?

import UIKit
import FBSDKCoreKit
import FBSDKLoginKit

class ViewController: UIViewController, FBSDKLoginButtonDelegate
{    
    override func viewDidLoad() {
        super.viewDidLoad()

        if (FBSDKAccessToken.currentAccessToken() == nil)
        {
            print("Not logged in..")
        }
        else
        {
            print("Logged in..")
        }

        let loginButton = FBSDKLoginButton()
        loginButton.readPermissions = ["public_profile", "email", "user_friends"]
        loginButton.center = self.view.center
        loginButton.delegate = self
        self.view.addSubview(loginButton)
    }

2 个答案:

答案 0 :(得分:0)

在这种情况下,您无法在故事板中看到该按钮。 FBSDKLoginButton是Facebook提供的自定义按钮。通过使用FBSDKLoginButton,您可以绕过一些额外的代码。可以在故事板中添加自定义登录按钮,并使用按钮的连接操作中的Facebook开发人员文档进行编码。

答案 1 :(得分:0)

Dan L是对的。您只能操纵和查看通过故事板本身添加的Storyboard中的对象。但是,您可以通过在View Debugger中查看,以编程方式向UIButton添加ViewController。这样,您可以旋转,放大和聚焦可见屏幕上的任何元素,甚至是Facebook按钮。但是这不允许您操纵视图调试器中的对象。大多数情况下,您希望这样做来设置与屏幕上其他内容相关的自动布局约束。你实际上可以仍然这样做:但它需要一点想象力。

1)您必须在视图控制器的故事板(IBOutlets)中选择要将按钮锚定到的元素。

2) 在代码中,精神上可视化您希望UIButton去的地方。对于程序按钮的每个方向,将NSLayoutConstraints添加到周围的视图中。

UIView *leftView = self.viewToTheLeftOfWhereIWantTheButtonToGo; //IBOutlet. Remember to list here all of the surrounding views like so
UIView *button = self.theFacebookButton; //IBOutlet
//Top | do for each direction
[container addConstraint:[NSLayoutConstraint constraintWithItem:button
                                                      attribute:NSLayoutAttributeLeft  //button's Left
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:leftView
                                                      attribute:NSLayoutAttributeRight  //leftView's Right
                                                     multiplier:1.0
                                                       constant:kFacebookButtonPadding]]; //some CGFloat you define

// And do this for Left, Bottom, and Right also.

3)由于所有子视图(包括Facebook按钮)都是self.view的子视图,因此请告诉主视图布置其子视图。

[self.view layoutIfNeeded];

4)根据您的需要调整它,构建并运行,并在View Debugger中检查结果。这是使用故事板的下一个最佳选择。