【问题标题】:iOS - a NIB's view used across storyboards (for design & animation logic)iOS - 跨故事板使用的 NIB 视图(用于设计和动画逻辑)
【发布时间】:2012-05-14 02:25:51
【问题描述】:

我有一个即将完成的 iOS 5 项目,但是到处都缺少一个相同的视图。它是标准 NavigationBar 的替代品,您可以通过滑动在导航层次结构中“返回”,并且动画效果很好。

好的,因为很难通过代码进行布局,所以我创建了空的 IB 文档 (HeaderView.xib),其中有一个包含子视图等的视图。 我之前有动画代码,所以我只是创建了一个 UIView 子类(“HRAnimationView”)(并在 xib 的检查器“自定义类”字段中写了它的名称,也将子视图连接到插座)使用方法:

- (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 *view 也不起作用,owner:self.headerView 也不起作用)

...日志只是给了我:

<HRAnimationView: 0x3f1890; frame = (0 0; 240 49); autoresize = RM+BM; layer = <CALayer: 0x3f18d0>>

有什么问题??也没有编译失败!

我不明白,为什么我的 xib 完全一文不值?!

【问题讨论】:

  • 不应该 isKindOfClass 检查 HRAnimationView 而不是 UIView
  • 嗯.. 谢谢,我会检查一下。但它不应该因为 HRAnimationView 是 UIView 的子类而工作吗?
  • 应该,但我认为你想确保它是正确的类来获得预期的行为......

标签: objective-c ios interface-builder storyboard xib


【解决方案1】:

NSArray *bundle = [[NSBundle mainBundle] loadNibNamed:@"HeaderView" owner:self options:nil];

在上面的语句之后...尝试添加这个

[self.headerView = [bundle objectAtIndex:0]

这应该可以解决问题

【讨论】:

    【解决方案2】:

    解决了!!!

    我创建了一个新的 ViewController 并选中了“使用 xib 创建”框并删除了 xib 的视图并将已设置的视图复制并粘贴在其​​中,在 ViewController 中我将动画代码放入 viewDidLoad。

    然后在每个storyboard ViewController的viewDidLoad-method中加载洞的东西:

    UIViewController *ctrl = [[UIViewController alloc] initwithNibNamed:@"HeaderView"];
    [self.headerView addSubview:ctrl.view]
    

    (headerView 是每个 Storyboard 中的一个视图的 IBOutlet,因此,这基本上是唯一需要设置的东西,NICE!)

    1. 另一种可能性是: Add subview using storyboard without external xib
    2. 或:http://forums.macrumors.com/showthread.php?t=749544

    看起来 Xib 没有相应的 ViewController 是没用的,但应该(奇怪..随便)。 但是感谢您的回复,如果他/她有同样的问题,希望现在有人能找到这个!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-28
      • 2011-12-17
      • 2012-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多