3

私は iOS 5 プロジェクトをほぼ完成させましたが、同じビューがどこにでも 1 つ欠けています。これは標準の NavigationBar に代わるもので、スワイプでナビゲーション階層に「戻る」ことができ、うまくアニメーション化されています。

わかりました。コードでレイアウトを行うのは難しいので、サブビューなどを含むビューがある空の IB ドキュメント (HeaderView.xib) を作成しました。以前にアニメーション コードを持っていたので、UIView サブクラス ("HRAnimationView") を作成しました。 (そして、xibのインスペクターの「カスタムクラス」フィールドにその名前を書き、サブビューをアウトレットに接続しました):

- (void)loadAnimation {…}

2 つ目 (これは完成したアニメーションのデリゲート メソッドです):

- (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 も、所有者:self.headerView も機能しませんでした)

…ログには次のように表示されます:

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

…</p>

何が問題ですか??コンパイルの失敗もありません!

私はそれを理解していません、なぜ私の場合、xibはまったく価値がないのですか?!

4

2 に答える 2

0

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

上記のステートメントの後に...これを追加してみてください

[self.headerView = [bundle objectAtIndex:0]

これで問題は解決するはずです

于 2012-05-04T18:23:27.120 に答える
0

解決しました!!!

新しいViewControllerを作成し、「xibで作成」ボックスをチェックしてxibのビューを削除し、そこに既に設定されているビューをコピーして貼り付け、ViewControllerでアニメーションコードをviewDidLoadに入れました。

次に、各ストーリーボード ViewController の viewDidLoad-method に穴をロードしました。

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

(headerView はすべての Storyboard のビューへの IBOutlet であるため、基本的にセットアップするのはこれだけです。ナイス!)

  1. 別の可能性は次のとおりです。 外部xibなしでストーリーボードを使用してサブビューを追加します
  2. または: http://forums.macrumors.com/showthread.php?t=749544

Xib は、対応する ViewController がないと役に立たないように見えますが、そうすべきです (奇妙な..何でも)。しかし、あなたの回答に感謝します。誰かが同じ問題を抱えている場合、これを見つけることができることを願っています!

于 2012-05-22T10:11:14.627 に答える