【问题标题】:UIButton is null in viewDidLoadUIButton 在 vi​​ewDidLoad 中为空
【发布时间】:2014-06-17 11:52:18
【问题描述】:

对不起,我的英语不好,我是 ios 开发的新手。 我正在尝试为从 UIViewController 继承的 TutorialChildController 添加一个新的 IBOutlet。我的 TutorialChildController 在 Storyboard 中,它有 UILabel、UIButton 和 UIImage。我在另一个 ViewController 中动态创建它,它是 rootViewController 。代码在 viewDidLoad 处调用,如下所示:

TutorialChildController *tutorialChildController = [self.storyboard instantiateViewControllerWithIdentifier:@"TutorialChildController"];

这是我的 TutorialChildController.h :

#import <UIKit/UIKit.h>

@interface TutorialChildController : UIViewController

@property (weak, nonatomic) IBOutlet UIButton *startButton;
@property (weak, nonatomic) IBOutlet UILabel *titleLabel;
@property (weak, nonatomic) IBOutlet UIImageView *tutorialImage;


@property  NSUInteger index;
@property NSString *titleText;
@property NSString *imageFile;

@end

但是在 TutorialChildController.m 中,我试图检查我的 Outlets,但我的 startButton 为空。

- (void)viewDidLoad
{
 [super viewDidLoad];
 NSLog(@"myButton : %@ ", self.startButton); // output is null
 NSLog(@"myLabel : %@ ", self.titleLabel); // output is object
}

故事板中链接的所有 IBOutlets 并且 startButton 为空。我不知道为什么。

我添加了一些截图:

ss1

ss2

ss3

【问题讨论】:

  • 检查情节提要,确保开始按钮正确链接到您的属性。你也可以通过进入 TutorialChildController.h 并检查属性左侧是否有一个实心点,或者如果它是一个空点,空表示没有任何链接。
  • 谢谢,但它是 startButton 的实心圆点。还从 stroyboard 及其与属性的链接再次检查。
  • 您的视图确实加载方法应该以 [super viewDidLoad] 开头;顺便说一句,尝试添加另一个按钮,看看那个是否为空。 (但不要更改任何按钮属性,只需将其添加到故事板上,然后链接即可)
  • 哦,抱歉,我忘了添加有问题的 super。它已经定义好了。我更新了我的代码。
  • 我做了你的建议,另一个按钮也是空的:/在 .h 文件中它的填充点也是

标签: ios objective-c


【解决方案1】:

我不敢相信,刚刚在 Xcode 菜单上试过:

product > clean 并且现在可以使用了!!!!该死的。

我花了 7-8 小时才解决。 :/ 感谢大家的帮助。

【讨论】:

  • 我遇到了同样的问题。该死!我生命中的几个小时。
【解决方案2】:

确保按钮作为引用插座连接到视图控制器,而不是插座集合

1:

【讨论】:

  • 我已经做到了。我还添加了我的项目的截图,你可以查看它。
  • 我说的是按钮,它与视图控制器正确绑定(我的看起来一样)但是当从列表中选择按钮时,它在 参考奥特莱斯
  • 是的,正如我所说,它像其他奥特莱斯一样连接,只是我为那个按钮获得了空值。
【解决方案3】:

试试这个:

- (void)viewDidAppear:(BOOL)animated
{
  [super viewDidAppear:animated];
  NSLog(@"myButton : %@ ", self.startButton.titleLabel.text);
  NSLog(@"myLabel : %@ ", self.titleLabel.text);
}

【讨论】:

  • self.startButton 为空,所以 titleLabel 也为空
  • 不确定你哪里出错了。只需将整个项目发布到某个地方,更容易检查它为什么不工作
  • 试着充实你的答案。只是发布一个没有任何解释或上下文的代码块是不好的。
  • 我已经添加了我的项目截图,你可以查看一下。
  • @XaverKapeller 我宁愿帮助 Zifozi 找出错误所在,也不愿一口气解释所有内容。我预感到紫佛子错在哪里。我认为它比这更简单。
【解决方案4】:

1:从情节提要中删除按钮并删除行 @property (weak, nonatomic) IBOutlet UIButton *startButton;

2:添加另一个按钮,使其坚固以防万一。

它肯定可以工作。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-03-28
  • 1970-01-01
  • 2018-09-06
  • 2012-09-20
  • 1970-01-01
  • 1970-01-01
  • 2012-04-19
  • 1970-01-01
相关资源
最近更新 更多