0

BrowseViewControllerとしてロードBrowseResultsTableViewControllersubViewます。そのsubview中に、次のコードブロックがあります。

- (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];
}

エラーをスローするThread 1: EXC_BAD_ACCESS (code=2 ....

プロジェクトをクリーンアップして再構築すると、次のエラーが発生します。

2013-03-25 23:59:06.256 rockit [40772:c07]-[UIViewControllerWrapperView refreshResults:]:認識されないセレクターがインスタンス0x7516fe0に送信されました2013-03-25 23:59:06.257 rockit [40772:c07]-キャッチされない例外'NSInvalidArgumentException'、理由:'-[UIViewControllerWrapperView refreshResults:]:認識されないセレクターがインスタンス0x7516fe0に送信されました'

なぜメソッドが見つからないのですか?

4

1 に答える 1

1

BrowseResultsTableViewControllerあなたがそれを作成してメソッドが終了した後、あなたの参照がリリースされるかもしれないと思います。おそらく、BrowseViewControllerそれを参照するインスタンス変数をその中に作成する必要があります。

// BrowserViewController.h

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

// BrowserViewController.m

@implementation BrowseViewController
@synthesize browseResultsVC;
// ...
- (void)someMethod {
    self.browseResultsVC = [[BrowseResultsTableViewController alloc] init];
    [self.view addSubview:browseResultsVC];
}
// ...
#end
于 2013-03-26T07:10:49.457 に答える