0

私は e-pub アプリを開発しており、UIScrollView を使用して複数のページを表示したいと考えています。しかし、ブレークポイントを介して表示してviewDidLoadが呼び出された後、scrollView変数がnullであることがわかりました。コード:

#import <UIKit/UIKit.h>

@interface PagedScrollViewController : UIViewController <UIScrollViewDelegate>

@property (nonatomic, strong) IBOutlet UIScrollView *scrollView;
@property (nonatomic, strong) IBOutlet UIPageControl *pageControl;

@end

.m ファイル:

@implementation PagedScrollViewController

@synthesize scrollView = _scrollView;
@synthesize pageControl = _pageControl;

@synthesize pageImages = _pageImages;
@synthesize pageViews = _pageViews;

- (void)viewDidLoad {
     NSLog(@"paged view did load");

    [super viewDidLoad];

    self.title = @"Paged";

そして、viewDidloadの後、scrollViewがまだnullに設定されていることがわかりました。前のビューでは、以下のコードを使用して上のビューに切り替えています。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    UITouch *touch = [touches anyObject];
    NSLog(@"touch pressed");
    PagedScrollViewController *indexView = [[PagedScrollViewController alloc] init];
    [self.navigationController pushViewController:indexView animated:YES];

    NSLog(@"touch pressed 2");
}
4

2 に答える 2

2

nil である IBOutlets は、ほとんどの場合、IB (Interface Builder) の壊れたアウトレット リンクが原因です。IB で VC を開き、「接続インスペクタ」を選択して、スクロール ビューをクリックします。VC の IBOutlet に接続されているかどうかを確認します。そうでない場合は、スクロールビューから「ファイルの所有者」にコントロールドラッグし、「scrollView」アウトレットを選択して接続します。

于 2013-09-07T17:47:38.017 に答える
1

まず、xib ファイルのスクロール ビュー アウトレットがscrollView.h ファイルに接続されていることを確認します。

また、コードに関するいくつかのコメント:

  1. の代わりにIBOutletプロパティを作成します。そうしないと、保持の問題が発生する可能性があります。weakstrong

  2. @synthesizeXcode の最近のバージョンを使用していて、iO 5+ をターゲットにしている場合、ステートメントは必要ありません。

編集:

ファイルを見PagedScrollViewController.xibて、参照アウトレットscrollViewが接続されていることを確認します。view示されているアウトレットのように、Interface Builder でそれを行う場所のこのスクリーンショットを参照してください。@ duncan-c も、接続方法について適切な説明を提供しています。

ここに画像の説明を入力

于 2013-09-07T17:46:06.190 に答える