iOS – 在故事板中使用的NIB视图(用于devise和animation逻辑)

我有一个iOS 5项目几乎完成,但有一个视图到处丢失是相同的。 这是标准NavigationBar的替代scheme,您可以通过滑动操作在导航层次结构中“返回”,并且它的animation效果非常好。

好吧,因为很难通过代码做布局我创build了空的IB文档(HeaderView.xib),我有一个包含子视图等视图。我有animation代码之前,所以我只是创build一个UIView子类(“HRAnimationView”) (并在xib的检查员“自定义类”字段中写下了它的名字,也将子视图连接到了网点),方法如下:

- (void)loadAnimation {…} 

和第二个(这是完成animation的委托方法):

 - (void)animationDidStop:(NSString*)animationID finished:(NSNumber*)finished context:(void*)context {} 

…这是所有的animation的东西发生和调用自己一遍又一遍,直到它完成…

在故事板中,我有一个具有完全相同尺寸的子视图(以及它的出口),并希望在相应控制器的viewDidLoad方法中加载XIB:

 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 *视图没有工作,也没有owner:self.headerView)

Log只是给了我:

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

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

我不明白,为什么在我的情况下xib完全没有价值?

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

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

 [self.headerView = [bundle objectAtIndex:0] 

这应该解决问题

解决了!!!

我创build了一个新的ViewController,并检查了“用xib创build”框,并删除了xib的视图,并复制并粘贴了已经设置的视图,并在ViewController中将animation代码放在了viewDidLoad中。

然后在每个故事板ViewController的viewDidLoad-method中加载这个洞:

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

(headerView是一个IBOutlet在每个故事板的视图,所以,这基本上是唯一的设置,NICE!)

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

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