为什么我的ViewDidLoad每次都会加载?

时间:2015-05-08 07:49:55

标签: ios viewdidload

我正在创建一个应用程序,我在其中实现了FB登录。所以我在ViewController.m文件中的ViewDidLoad中写了一个FBLogin按钮代码。

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

FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init];
loginButton.center = self.view.center;
[self.view addSubview:loginButton];

}

但是当我运行此代码时。 fb按钮出现在我的应用程序的所有页面中,这意味着我每次都会调用viewController.m ViewDidLoad方法。为什么? 我正在寻找解决方案持续4个小时,但还没有得到任何结果。 请帮帮我。

2 个答案:

答案 0 :(得分:2)

正如您所说,您的视图控制器继承自此视图控制器,因此调用[super viewDidLoad]的每个视图控制器都将执行此方法。 (解决方案不是删除super调用。)

您可以:

,而不是创建此ViewController,并且每个其他视图控制器都可以继承此视图控制器
  • 创建CommonViewController,实现视图控制器之间通用的所有内容
  • 创建一个FacebookLoginViewController,它也继承自CommonViewController

因此,您的继承树看起来像:

CommonViewController
      /          \
     /            \
    /              \
FacebookLoginVC    OtherViewControllers

而不是:

ViewController (which is equivalent to FacebookViewController)
     |
     |
     |
OtherViewControllers

答案 1 :(得分:0)

以下是我的问题的答案

当我使用ViewController继承所有其他ViewControllers和主ViewController类时,我犯了一个小错误。我用

修改了我的代码
 @interface ViewController : UIViewController


 @end

而不是

 @interface ViewController : ViewController

 @end

和所有其他类一样

   @interface homeViewController : UIViewController

   @interface contestViewController : UIViewController


   @interface menuViewController : UIViewController 

这简直解决了我的问题。谢谢你的帮助。