[英]iOS - a NIB's view used across storyboards (for design & animation logic)
我有一个几乎完成的iOS 5项目,但是到处都有一个View缺失,这是相同的。 它是标准NavigationBar的替代品,您可以通过滑动在导航层次结构中“返回”,并且可以很好地制作动画。
好的,因为很难通过代码进行布局我创建了空的IB文档(HeaderView.xib),其中我有一个包含子视图等的视图。之前我有动画代码所以我刚刚创建了一个UIView子类(“HRAnimationView”) (并在xib的检查员“Custom Class”字段中写下了它的名称,并将子视图连接到出口),方法如下:
- (void)loadAnimation {…}
和第二个(这是完成动画的委托方法):
- (void)animationDidStop:(NSString*)animationID finished:(NSNumber*)finished context:(void*)context {}
......这就是所有动画内容发生的地方,一遍又一遍地自我调用直到它完成......
在故事板中,我有一个具有完全相同尺寸(及其出口)的子视图,并希望加载XIB(在相应控制器的viewDidLoad方法中):
NSArray *bundle = [[NSBundle mainBundle] loadNibNamed:@"HeaderView" owner:self options:nil];
HRAnimationView *view;
for (id object in bundle) {
NSLog(@"%@",object);
if ([object isKindOfClass:[UIView class]])
view = (HRAnimationView *)object;
}
self.headerView = view;
[self.view setNeedsDisplay];
[view loadAnimation];
但是headerView是EMTPY !! (也是UIView *视图没有用,也没有所有者:self.headerView)
......日志只是给了我:
<HRAnimationView: 0x3f1890; frame = (0 0; 240 49); autoresize = RM+BM; layer = <CALayer: 0x3f18d0>>
...
问题是什么?? 也没有编译失败!
我不明白,为什么xib TOTALLY在我的情况下一文不值?!
NSArray * bundle = [[NSBundle mainBundle] loadNibNamed:@“HeaderView”owner:self options:nil];
在上述声明之后......尝试添加此内容
[self.headerView = [bundle objectAtIndex:0]
这应该可以解决问题
解决了!!!
我创建了一个新的ViewController并检查了“使用xib创建”框并删除了xib的视图并复制并粘贴了已设置的视图,在ViewController中我将动画代码放在viewDidLoad中。
然后在每个故事板ViewController的viewDidLoad方法中加载hole事物:
UIViewController *ctrl = [[UIViewController alloc] initwithNibNamed:@"HeaderView"];
[self.headerView addSubview:ctrl.view]
(headerView是每个故事板中视图的IBOutlet所以,这基本上是唯一要设置的东西,NICE!)
看起来没有相应的ViewController,Xib是没用的,但应该(奇怪......等等)。 但感谢您的回复,希望有人现在可以找到这个,如果他/她有同样的问题!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.