繁体   English   中英

iOS - 跨故事板使用的NIB视图(用于设计和动画逻辑)

[英]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!)

  1. 另一种可能性是: 使用storyboard添加子视图而不使用外部xib
  2. 或者: http//forums.macrumors.com/showthread.php?t = 749544

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM