2013-02-25 53 views
2

我無法刷新我的TVC。當我拖下來刷新時,它崩潰。圖標在那裏,但隨後退出。我確定它很簡單。那裏有類似的問題沒有被考慮過。UIRefreshControl在刷新Tableview控制器時崩潰

refreshControl = [[UIRefreshControl alloc] init]; 
[refreshControl addTarget:self 
        action:@selector(refreshInvoked:forState:) 
     forControlEvents:UIControlEventValueChanged]; 
[self.tableView addSubview:refreshControl]; 

refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:title 
                  attributes:@{NSFontAttributeName:[UIFont fontWithName:@"Helvetica" size:13.0]}]; 
[self refreshFeed]; 

其中提到:

-(void)refreshFeed 
{ 
    RSSLoader* rss = [[RSSLoader alloc] init];  
    [rss fetchRssWithURL:feedURL 
      complete:^(NSString *title, NSArray *results) { 
       dispatch_queue_t downloadQueue = dispatch_queue_create("downloader",NULL); 
       dispatch_async(downloadQueue, ^{ 
       _objects = results; 
        [self.tableView reloadData]; 
       //completed fetching the RSS 
       dispatch_async(dispatch_get_main_queue(), ^{ 
    //    [(HeaderView*)self.tableView.tableHeaderView setText:title]; 
        // [(ArticleItem*)self.tableView.] 
       }); 
       }); 
    }]; 
} 
+1

請在崩潰時詢問崩潰日誌,ACB可能是正確的,但爲什麼讓我們猜測? – jrturton 2013-02-25 22:34:58

+0

@ jrturton,的確如此。我的答案純粹是基於一個假設,可能是完全錯誤的。 – iDev 2013-02-25 22:37:32

回答

3

更改您的行動方法:

從我viewDidLoad方法機構作出

[refreshControl addTarget:self 
        action:@selector(refreshFeed) 
     forControlEvents:UIControlEventValueChanged]; 

看起來你指着refreshInvoked:forState:這並不存在於自我中。

+0

您也可以嘗試實現' - (void)refreshInvoked:(id)sender forState:(UIEvent *)event'並保持addTarget部分不變。 – iDev 2013-02-25 22:48:38

+0

答案主體的解決方案立即解決了問題。現在在完成之後解除refreshControl的問題。 – Morkrom 2013-02-27 05:07:27

+0

很高興知道這一點。 _「現在是在完成之後解除refreshControl的問題。」_ - 你不必解僱它。我會自動回到以前的狀態。 – iDev 2013-02-27 05:14:29

4

UIRefreshControl並不意味着要添加爲子視圖 ...這樣做將會給你一些麻煩,你需要註銷其對VC的dealloc目標......否則你可能會得到一些問題,當UIRefreshControl您的來電死的VC(因爲它不能保持對你的VC的弱或強的參考)