我有一个即将完成的 iOS 5 项目,但到处都缺少一个相同的 View 。它是标准 NavigationBar 的替代品,您可以通过滑动在导航层次结构中“返回”,并且它的动画效果很好。
好的,因为很难通过代码进行布局,所以我创建了一个空的 IB 文档 (HeaderView.xib),其中我有一个包含 subview 等的 View 。 我之前有动画代码所以我只是创建了一个 UIView 子类(“HRAnimationView”)(并在 xib 的检查员“自定义类”字段中写下它的名称,还将 subview 连接到 socket )使用方法:
- (void)loadAnimation {…}
还有第二个(这是完成动画的委托(delegate)方法):
- (void)animationDidStop:(NSString*)animationID finished:(NSNumber*)finished context:(void*)context {}
...这是所有动画内容发生的地方,并一遍又一遍地调用自身直到完成...
在 Storyboard 中,我有一个具有完全相同尺寸(及其导出)的 subview ,并且想要加载 XIB(在相应 Controller 的 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 是空的!! (还有 UIView *view 没有工作,也没有 owner:self.headerView)
...日志只是给我:
<HRAnimationView: 0x3f1890; frame = (0 0; 240 49); autoresize = RM+BM; layer = <CALayer: 0x3f18d0>>
…
问题是什么??也没有编译失败!
我不明白,为什么 xib 在我的情况下完全没有值(value)?!
最佳答案
NSArray *bundle = [[NSBundle mainBundle] loadNibNamed:@"HeaderView" owner:self options:nil];
在上面的语句之后...尝试添加这个
[self.headerView = [bundle objectAtIndex:0]
这应该可以解决问题
关于objective-c - iOS - 跨 Storyboard使用的 NIB View (用于设计和动画逻辑),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10450577/