objective-c - iOS - 跨 Storyboard使用的 NIB View (用于设计和动画逻辑)

标签 objective-c ios interface-builder storyboard xib

我有一个即将完成的 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/

相关文章:

ios - UIImagePickerController - 横向拍摄的照片在顶部创建黑条

objective-c - 设置委托(delegate) :self generates a caution flag

iphone - NSFormatter 和 NSdate 问题。获取 nsdate 对象为 null

iphone - 如何在 UIAlertview 中添加 iAd?

Xcode - 在界面构建器/ Storyboard中直观地识别自定义 View

ios - 您可以使用类别/扩展将 IBDesignable 属性添加到 UIView 吗?

ios - Objective-C - writeToFile 成功但 removeFile 返回相同文件的错误

ios - 将值设置为表行的文本标签多次显示相同的值

iphone - 从另一个类调用选择器方法 - NSNotificationCenter

xcode - 为什么在我的 RootViewController :viewDidLoad method? 之后突然调用我的应用程序委托(delegate)的 didFinishLaunchingWithOptions 方法