【问题标题】:Why won't this code allocate a subView?为什么这段代码不分配子视图?
【发布时间】:2012-04-05 06:14:25
【问题描述】:

这是我尝试创建子视图的代码...我将 XCode4 与 StoryBoards 一起使用。该应用程序在第二行崩溃,它正在使用 EXC_BAD_ACCESS 分配子视图。 vFrame 具有有效内容。这有什么问题? (顺便说一句,我将 XCode4 与 Storyboard 一起使用)。

- (void)viewDidLoad
{
    [super viewDidLoad];

    CGRect vFrame = CGRectMake(60,100,200,200);
    subView = [[UIView alloc] initWithFrame:vFrame];
    subView.backgroundColor = [UIColor redColor];
    [self.view addSubview: subView];
}

更新:子视图的定义:

@interface PreferencesViewController : UIViewController  {

    UIView *subView;
}

@property (nonatomic, retain)  UIView *subView;

@end

【问题讨论】:

  • 什么是子视图?它是在某个地方定义的吗?
  • 我用故事板(Xcode 4.2,SDK 5.0)创建了一个测试项目并粘贴到你的代码中:没问题。尝试在 Objective-C 异常上设置断点,或者捕获异常,然后查看堆栈符号的样子。

标签: objective-c xcode4


【解决方案1】:

这确实应该有效。您的视图控制器 (PreferencesViewController) 是否正确分配和初始化?你@synthesize 你的子视图了吗?

虽然没关系,但您可以尝试对 CGRect 使用浮点数(在每个末尾添加一个 .0)。

【讨论】:

  • 嗨亚当...是的,subView 是@synthesiz'ed...浮动没有区别...它是带有故事板的 XCode4 怎么样?而且我知道它会到达 PreferencesViewController 因为那是代码所在的地方......我想知道它是否是 XCode4 错误?
  • Adam...去昨天的Q(stackoverflow.com/questions/10015985/…):看看我最后的评论...
【解决方案2】:

尝试将您的子视图实例化代码移动到主视图的 viewWillAppear 方法中。这保证一切都已初始化。

【讨论】:

    【解决方案3】:

    问题是 UIViewController 被卡住了……不知道是怎么回事,但是一旦被替换,它就可以像冠军一样工作了!谢谢大家的回复...

    【讨论】:

      猜你喜欢
      • 2010-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-27
      • 1970-01-01
      • 1970-01-01
      • 2017-11-25
      • 1970-01-01
      相关资源
      最近更新 更多