gpt4 book ai didi

iphone - TTSearchTextFieldDelegate 不调用 textField :didSelectObject:

转载 作者:行者123 更新时间:2023-11-28 17:39:29 25 4
gpt4 key购买 nike

我在 TTTableViewController 中实现了 TTSearchTextFieldDelegate

我的标题看起来像这样:

#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

我的实现是这样的:

#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; 被调用并完美运行。当选择了 TTTableView 中的单元格时。

但是方法 - (void)textField:(TTSearchTextField*)textField didSelectObject:(id)object 永远不会被调用。当我在搜索某些内容后在 TTTableView 中选择一个单元格时,应该调用此方法。

我做错了什么?这基本上是来自此处的 TTCatalog 示例:https://github.com/facebook/three20/tree/master/samples/TTCatalog

最佳答案

我通过实现 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];
}

关于iphone - TTSearchTextFieldDelegate 不调用 textField :didSelectObject:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8729722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com