Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何使用自定义UISearchBar获取searchBarDelegate方法?_Iphone_Ios_Uiview_Subclass_Uisearchbar - Fatal编程技术网

Iphone 如何使用自定义UISearchBar获取searchBarDelegate方法?

Iphone 如何使用自定义UISearchBar获取searchBarDelegate方法?,iphone,ios,uiview,subclass,uisearchbar,Iphone,Ios,Uiview,Subclass,Uisearchbar,我为我的应用程序创建了一个自定义搜索栏,下面是类: h 我正在尝试获取searchBarSearchButtonClicked:delegate方法的功能 以下是用于此(taskListViewController)的代码: h 因此,我在searchView类和TaskListViewController上都设置了uisearchBarDelegate。之所以没有调用它,是因为我正在对uiview而不是uisearchBar进行子类化?如果您需要更多代码/详细信息,请告诉我!谢谢 您已经创建了

我为我的应用程序创建了一个自定义搜索栏,下面是类: h

我正在尝试获取
searchBarSearchButtonClicked:
delegate方法的功能

以下是用于此(taskListViewController)的代码:

h


因此,我在searchView类和TaskListViewController上都设置了uisearchBarDelegate。之所以没有调用它,是因为我正在对uiview而不是uisearchBar进行子类化?如果您需要更多代码/详细信息,请告诉我!谢谢

您已经创建了一个自定义搜索视图,因此建议您的类实现自己的委托搜索方法,而不是使用现有的UISearchBar方法来区分并使代码更具可读性

你应该为你的
SearchView
类做一个委托

在这里,您可以参考如何创建自己的一个

创建后,
TaskListViewController
可以符合该委托,当点击searchButton时,您可以在searchview中调用该方法,以便TaskListViewController接收该方法

@interface SearchView : UIView <UITextFieldDelegate, UISearchBarDelegate>
@property (nonatomic, strong) UITextField *searchField;
@property (nonatomic, strong) UIButton *searchButton;
@end
@implementation SearchView

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {

      CGRect frame = CGRectMake(0, 0, 35, 35);

      [self.searchButton sizeToFit];
      self.alpha = 0.6;
      self.backgroundColor = [UIColor colorWithRed:206/255.0 green:206/255.0 blue:206/255.0 alpha:.8];
      self.searchButton = [UIButton buttonWithType:UIButtonTypeCustom];
      //[self.searchButton addTarget:self action:@selector(performSearchQuery) forControlEvents:UIControlEventTouchUpInside];
      [self.searchButton setImage:[UIImage imageNamed:@"SearchIcon2"] forState:UIControlStateNormal];
      //[self.searchButton sizeToFit];
      //self.searchButton.bounds.size.height = ;
      self.searchButton.frame = frame;
     // self.searchButton.right = frame.size.width - kPadding;
      [self addSubview:self.searchButton];

      self.searchField = [[UITextField alloc] initWithFrame:CGRectMake(43, -5, 270, 50)];
      //self.searchField.placeholder = [@"Search..." uppercaseString];
      self.searchField.delegate = self;
      self.searchField.autocorrectionType = UITextAutocorrectionTypeNo;
      self.searchField.autocapitalizationType = UITextAutocapitalizationTypeWords;
      self.searchField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
      self.searchField.returnKeyType = UIReturnKeySearch;
      self.searchField.clearsOnBeginEditing = YES;
      self.searchField.clearButtonMode = UITextFieldViewModeWhileEditing;
      [self addSubview:self.searchField];

    }
    return self;
}
@interface TaskListViewController : UIViewController <UITableViewDelegate,UITableViewDataSource, UISearchBarDelegate, UITextFieldDelegate, ScavengerAPIGetTaskListDelegate>{
    SearchView *searchView;
}
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
  searchBar = (UISearchBar *)searchView;

  [self didTapSearchButton];
}

- (IBAction)didTapSearchButton

    {
      NSString *searchTerm = searchView.searchField.text;

      if ([searchTerm isEqualToString:@""]) {
        [self.view endEditing:YES];
        return ;
      }

      [searchView resignFirstResponder];
      NSArray *results = [[CoreDataManager sharedInstance] fetchTaskByName:searchTerm];

      [tasks removeAllObjects];
      [tasks addObjectsFromArray:results];

      [self.view endEditing:YES];
      [taskTable reloadData];
    }