2012-11-27 63 views
1

在控制器中,我創建了一個UIScrollView。我試圖設置這個viewcontroller作爲UISCrollview委託,並實施委託的方法,以添加(稍後)一個UIPageControl。EXC_BAD_ACCESS當拖動UIScrollView

我讀了一下,發現this link,this other link和其他這裏在SO和一些有用的教程在網絡上,但我不明白我做錯了什麼。每次滾動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上已經有很多了,但是我覺得我錯過了一些東西。瀏覽各方面的事實,即委託可以提前釋放,當用戶觸發操作時,沒有人在處理方法(對於解釋:))。 ...但如果委託它是viewcontroller本身,它怎麼可以被釋放?

正如你所看到的,我很困惑:( 任何幫助將非常感激

- 編輯: 我要在這裏包括解決方案建立與感謝您的意見和答覆。 當我發佈我的問題時,我深信這個錯誤來自於我創建UIScrollView並設置它的委託的方式,我沒有意識到問題是(因爲所有的事情都是暗示,btw :))我正在分配在它的父母StateViewController沒有聲明任何「強」的引用(再次,對於解釋抱歉,我真的是一個n00b在這)。 非常感謝您幫助我指點正確的方向

+2

Stacktrace請! – 2012-11-27 20:26:49

+0

崩潰可能在'BreatheLocationViewController'的'viewDidLoad'中。只有一個堆棧跟蹤可以驗證。您能否將控制檯中的崩潰消息複製並粘貼到此處。 – iDev

+0

@ACB感謝您的幫助....但如果我在設置「scrollView.delegate = self」這一行的註釋,一切正常,所以我不認爲問題是在其他視圖控制器。對不起,我的極端無知,但我在哪裏可以找到你建議我複製的信息?在調試導航器中,我有很多信息,是否足夠與線程1,0 objs_msgSend相關的部分? –

回答

2

看起來您在滾動過程中失去了對委託的引用。我會研究StatsViewController或其他可能導致它被取消引用的事件的其他任何發佈事件。

+1

@SrRichie你如何'保留'/'存儲'/分配StatsViewController? –