コントローラーでは、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です)。私を正しい方向に向けてくれてありがとう