2012-01-04 2 views
1

을 호출하지 않았습니다. TTTableViewControllerTTSearchTextFieldDelegate의 구현이 있습니다.TTSearchTextFieldDelegate가 textField : didSelectObject :

#import "SearchTestController.h" 
#import "MockDataSource.h" 

@implementation SearchTestController 

@synthesize delegate = _delegate; 

////////////////////////////////////////////////////////////////////////////////// 
// NSObject 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { 
     _delegate = nil; 

     self.title = @"Search Test"; 
     self.dataSource = [[[MockDataSource alloc] init] autorelease]; 

    } 
    return self; 
} 

- (void)dealloc { 
    [super dealloc]; 
} 

////////////////////////////////////////////////////////////////////////////////// 
// UIViewController 

- (void)loadView { 
    [super loadView]; 

    TTTableViewController* searchController = [[[TTTableViewController alloc] init] autorelease]; 
    searchController.dataSource = [[[MockSearchDataSource alloc] init] autorelease]; 
    self.searchViewController = searchController; 
    self.tableView.tableHeaderView = _searchController.searchBar; 

} 

////////////////////////////////////////////////////////////////////////////////// 
// TTTableViewController 

- (void)didSelectObject:(id)object atIndexPath:(NSIndexPath*)indexPath { 
    [_delegate searchTestController:self didSelectObject:object]; 
} 

////////////////////////////////////////////////////////////////////////////////// 
// TTSearchTextFieldDelegate 

- (void)textField:(TTSearchTextField*)textField didSelectObject:(id)object { 
    [_delegate searchTestController:self didSelectObject:object]; 
} 

@end 

방법 - (void)didSelectObject:(id)object atIndexPath:(NSIndexPath*)indexPath;가 호출지고 완벽하게 작동합니다

#import <Three20/Three20.h> 

@protocol SearchTestControllerDelegate; 
@class MockDataSource; 

@interface SearchTestController : TTTableViewController <TTSearchTextFieldDelegate> { 
    id<SearchTestControllerDelegate> _delegate; 
} 

@property(nonatomic,assign) id<SearchTestControllerDelegate> delegate; 

@end 

@protocol SearchTestControllerDelegate <NSObject> 

- (void)searchTestController:(SearchTestController*)controller didSelectObject:(id)object; 

@end 

내 구현은 다음과 같습니다

내 헤더는 다음과 같습니다. TTTableView의 셀을 선택했을 때입니다.

그러나 - (void)textField:(TTSearchTextField*)textField didSelectObject:(id)object 메서드는 호출되지 않습니다. 뭔가를 검색 한 후에 TTTableView에서 셀을 선택하면이 메서드를 호출해야합니다.

내가 뭘 잘못하고 있니? 이 TTCatalog의 예를 여기에서 기본적으로 : https://github.com/facebook/three20/tree/master/samples/TTCatalog

답변

0

나는 UITableViewDelegate과를 구현하여 내 문제를 해결 -(void)loadView:에 내가 설정 남아있는 유일한 방법은이 방법을 구현하기 위해 다음 _searchController.searchResultsTableView.delegate = self;

이었다

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    TTTableImageItemCell *cell = (TTTableImageItemCell *) [tableView cellForRowAtIndexPath:indexPath]; 
    TTTableImageItem *object = [cell object]; 
    [_delegate searchTestController:self didSelectObject:object]; 
}