我的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在我的情况下完全没用?!
答案 0 :(得分:0)
NSArray * bundle = [[NSBundle mainBundle] loadNibNamed:@“HeaderView”owner:self options:nil];
在上述声明之后......尝试添加此
[self.headerView = [bundle objectAtIndex:0]
这应该可以解决问题
答案 1 :(得分:0)
解决!!!
我创建了一个新的ViewController并检查了“使用xib创建”框并删除了xib的视图并复制并粘贴了已设置的视图,在ViewController中我将动画代码放在viewDidLoad中。
然后在每个故事板ViewController的viewDidLoad方法中加载了一个孔:
UIViewController *ctrl = [[UIViewController alloc] initwithNibNamed:@"HeaderView"];
[self.headerView addSubview:ctrl.view]
(headerView是每个故事板中视图的IBOutlet所以,这基本上是唯一要设置的东西,NICE!)
看起来没有相应的ViewController,Xib没用,但应该(奇怪......等等)。 但是感谢您的回复,希望有人现在可以找到这个,如果他/她有同样的问题!