在控制器中,我正在创建一个 UIScrollView。我正在尝试将此视图控制器设置为 UISCrollview 委托并实现委托的方法以添加(稍后)UIPageControl。
我读了一些,发现了这个链接,这个其他链接和其他链接,还有一些有用的教程在网络上,但我不明白我做错了什么。每次滚动 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 并设置其委托的方式,以至于我没有意识到问题是(正如一切所暗示的那样,顺便说一句:))我正在分配StateViewController 在其父级中没有声明对它的任何“强”引用(再次,抱歉解释,我真的是一个 n00b)。非常感谢您帮助我指出正确的方向