2013-03-26 30 views
0

BrowseViewController加載BrowseResultsTableViewController作爲subView。在這種subview,是下面的代碼塊:將refreshControl添加到TableViewController的子視圖時的EXC_BAD_ACCESS

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

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

} 

- (void)refreshResults:(UIRefreshControl *)sender 
{ 
    NSLog(@"REFRESH"); 
    //[self performSelector:@selector(updateTable) withObject:nil afterDelay:1]; 
} 

引發錯誤​​

如果我清理項目和rebulid,我得到這個錯誤:

2013-03-25 23:59:06.256 rockit[40772:c07] -[UIViewControllerWrapperView refreshResults:]: unrecognized selector sent to instance 0x7516fe0 2013-03-25 23:59:06.257 rockit[40772:c07] - Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIViewControllerWrapperView refreshResults:]: unrecognized selector sent to instance 0x7516fe0'

爲什麼不能它找到了方法?

+0

範圍可能是一個問題,增加實例的範圍或者你使用自動引用計數器移至實例級別 – Spynet 2013-03-26 08:35:02

+0

?如果不是,那麼init需要一個「保留」。 – Gossamer 2013-03-26 08:41:22

回答

1

我認爲您創建BrowseResultsTableViewController後可能會發布,並且方法結束。您可能需要在引用它的BrowseViewController內創建一個實例變量。

// BrowseViewController.h

@interface BrowseViewController : UIViewController 
// ... 
@property (nonatomic, strong) BrowseResultsTableViewController *browseResultsVC; 
// ... 
@end 

// BrowseViewController.m

@implementation BrowseViewController 
@synthesize browseResultsVC; 
// ... 
- (void)someMethod { 
    self.browseResultsVC = [[BrowseResultsTableViewController alloc] init]; 
    [self.view addSubview:browseResultsVC]; 
} 
// ... 
#end 
+0

OMGOMGOMGGOMGOMGOMG!謝謝!我知道這是這樣的,我正在失眠。現在,我可以開始一個微笑的一天。謝謝! – awsmsce 2013-03-26 15:36:34

相關問題