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!)
- 另一种可能性是: 添加子视图使用故事板没有外部xib
- 或者: http : //forums.macrumors.com/showthread.php?t=749544
看起来像一个Xib是没有相应的ViewController没用,但应该(奇怪..无论)。 但感谢您的回应,希望有人现在可以find这个,如果他/她有同样的问题!