1

これは、正しく合成されていないアウトレットに関するものです (UIScrollView)

ある特定のケースでは、次のように宣言されたインターフェイスがあります。

@interface VC_Create_Preview : UIViewController <UIScrollViewDelegate> {
    UIScrollView *scrollView;
}

@property (nonatomic, retain) IBOutlet UIScrollView *scrollView;

そして実装に……。

@synthesize scrollView;

しかし、デバッグ モードでは、self->scrollView の横に常に 0x0 があることがわかります。のような操作を実行する

CGRect frame = scrollView.frame;

常にゼロの原点、高さ、幅を返します(正しく合成されていないためと思われます)

0x0 は、メモリ内のどの場所も指していないことを意味しますか? これは正しく合成されていないということですか?アウトレットから IB のスクロールビューへのリンクがどこかに壊れている可能性がありますか?

乾杯ケビン

4

5 に答える 5

2
  1. UIScrollViewをアウトレットに実際に接続したことを確認してください。
  2. ペン先からビューが読み込まれるまで、scrollViewは設定されないことに注意してください。
于 2012-01-12T05:14:09.997 に答える
1

0x0 は null ポインターを意味します。おそらく IB で scrollView をスクロール ビューに関連付けていません。これは、viewControllers nib のビューに scrollView があり、アウトレットに関連付けられていることを意味します。

于 2012-01-12T05:12:57.160 に答える
0

アウトレットを操作し、ユーザーに表示される実際のサイズ (ナビゲーション バー、タブ バーなどを含む) を使用する場合は、viewWillAppearまたはですべての UI 変更を実装する必要がありますviewDidAppear
nib からビューをロードする段階についての詳細をお読みください。

于 2012-01-12T07:10:32.053 に答える
-2

コードで正しいクラスを使用していることを確認してください。たとえば、UIViewControllerストーリーボードに最初にドロップすると、一般的な「whateveryourprojectiscalled」UIViewControllerが使用されます。

しかし、私にとっての問題は、それが他のいくつかにリンクされていてUIViewController、どれも独自のクラスが宣言されていなかったため、私が書いていたスクローラーアウトレットがメインのオリジナルにしか表示されUIViewControllerないことでした。なれ。したがって、カスタムクラス名を記述したら、それに対応するようにコードを書き直しました。コンセントは完璧に見え、正常に機能しました。

于 2012-09-21T22:56:02.757 に答える