xcode – 如何将IBOutlet连接到UIView?
我正试图在看到动画后切换视图:
[UIView beginAnimations: @"Fade Out" context:nil]; [UIView setAnimationDelay:1.0]; [UIView setAnimationDuration:0.25]; splash.alpha = 0.0; [UIView commitAnimations]; [self.view addSubview : view]; 在[self.view addSubview:view];我必须为视图添加一个名称才能添加,所以我创建了一个像这样的IBOutlet :(在第一个视图控制器的.h文件中) IBOutlet UIView *main; 但是当我尝试将*主UIView连接到故事板上的视图时,它不会让我… 解决方法
您的困惑之处在于在代码中创建UI对象与使用Interface Builder / storyboard以图形方式创建它们之间.
一个线索是您使用预处理器提示’IBOutlet’. IB用于Interface Builder ==图形创建(使用storyboard或xib文件). 如果在故事板中创建…… >正如您所做的那样创建一个IBOutlet属性,尽管语法完全正确 IBOutlet的全部目的是为您提供对故事板场景中可以在代码中使用的项目的引用. 你不需要这样做: [self.view addSubview : view]; 因为它已经创建并添加到您的故事板中.确保它在您的视图层次结构中按预期定位. 如果在代码中创建…… 在@interface中声明一个属性 @property (nonatomic,strong) UIView *main; (不需要IBOutlet,因为您没有在故事板中链接它.如果您没有立即将其分配给视图层次结构,则声明为“强”而不是“弱”). 在添加此行之前 [self.view addSubview : view]; 您需要考虑:您是否添加了storyboard / xib中不存在的新视图?如果是这样,则在创建之前无法添加它. (在故事板场景中添加IS在您的故事板中的视图没有意义,因为它已经存在). 所以 – 当您在代码中执行此操作时 – 您需要在添加视图之前创建视图. UIView* myView = [[UIView alloc] init]; 设置它的frame属性,以便我们知道将它添加到视图层次结构时它将出现在何处 myView.frame = CGRectMake (CGFloat x,CGFloat y,CGFloat width,CGFloat height); 将新创建的视图分配给属性 self.main = myView; 将其添加到视图层次结构中 [self.view addSubview : myView]; 现在,您可以使用self.main在代码中引用它.这就像你在IB / storyboard中添加它并将CRTL拖动到你的IBOutlet的参考链接一样. 如果要在代码中创建视图并立即将其添加到视图层次结构中,则声明属性的替代方法是在视图上设置(数字)标记属性,然后可以使用它的superview的viewWithTag:方法引用视图 您不能做的一件事是在代码中创建视图,然后使用故事板对其进行操作. 我希望这一切都很有用,我担心我可能会让你更加困惑! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |