1

コントローラーでは、UIScrollView を作成しています。このviewcontrollerをUISCrollviewデリゲートとして設定し、(後で)UIPageControlを追加するためにデリゲートのメソッドを実装しようとしています。

私は少し読んで、このリンクこの他のリンク、およびその他の SO で見つけたものと、Web 上のいくつかの便利なチュートリアルを見つけましたが、私が間違っていることを理解していません。UIScrollView をスクロールするたびに、EXC_BAD_ACCESS エラーでアプリがクラッシュします。

ここに私の.hファイルがあります

#import <UIKit/UIKit.h>

@interface StatsViewController : UIViewController <UIScrollViewDelegate> {
     UIScrollView *scrollView;
     UIPageControl *pageControl;
}

@end

次に、.m ファイルで、スクロールビューを作成し、次のようにデリゲート メソッドを定義しようとしています。

- (void)viewDidLoad {
     [super viewDidLoad];
     NSInteger boxWidth = self.view.frame.size.width;
     NSInteger boxHeight = 412;
    scrollView = [ [UIScrollView alloc] initWithFrame:CGRectMake(0, 0,      self.view.frame.size.width, boxHeight)];
    scrollView.pagingEnabled = TRUE;
    scrollView.delegate = self;

     NSInteger numberOfViews = 2;

    StatBreatheCounter *breatheCounter = [ [StatBreatheCounter alloc] init];
    breatheCounter.view.frame = CGRectMake(0, 0, boxWidth, boxHeight);
    [scrollView addSubview:breatheCounter.view];

    BreatheLocationViewController *breatheLocation = [ [BreatheLocationViewController alloc] init];
    breatheLocation.view.frame = CGRectMake(320, 0, boxWidth, boxHeight);
    [scrollView addSubview:breatheLocation.view];

     scrollView.contentSize = CGSizeMake(self.view.frame.size.width * numberOfViews, boxHeight);
     [self.view addSubview:scrollView];

}

 - (void)scrollViewDidScroll:(UIScrollView *)sender {
     NSLog(@"RUNNING");
 }

...しかし、スクロール ビューをスライドするたびに、アプリがクラッシュします。現在、私は Ojective-C についてかなり無関心ですが、何かが足りないと感じています。すべてを参照すると、デリゲートの割り当てが早期に解除される可能性があり、ユーザーがアクションをトリガーすると、誰もメソッドを処理していないことがわかります (説明して申し訳ありません:))。...しかし、デリゲートがビューコントローラー自体である場合、どのように割り当てを解除できますか?

ご覧のとおり、私はかなり混乱しています:(どんな助けも本当に感謝しています

-- 編集: コメントと回答のおかげで設立されたソリューションをここに含めます。質問を投稿したとき、UIScrollView を作成してそのデリゲートを設定する方法からエラーが発生していると確信していたので、問題が (すべてが示唆しているように、btw :)) であることを認識していませんでした。それへの「強い」参照を宣言せずに、その親に StateViewController を追加します(繰り返しますが、説明で申し訳ありませんが、私はこれで本当にn00bです)。私を正しい方向に向けてくれてありがとう

4

1 に答える 1

2

スクロール中にデリゲートへの参照が失われているようです。StatsViewControllerの周りの他のリリースイベント、または逆参照を引き起こす可能性のある他のイベントを調べます。

于 2012-11-27T21:44:36.410 に答える