在视图中设置searchBar.text确实加载了

时间:2011-09-18 23:34:32

标签: iphone objective-c ios uisearchbar

我正在尝试设置我的searchBar.text,当我从视图1推出视图2.我正在将一个字符串成功传递到视图2但是我想将字符串设置为searchBar.text来过滤我的表。这是我的代码到目前为止,但似乎没有工作。

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.title = NSLocalizedString(@"Places", nil);
    self.managedObjectContext = [self getContext];
    UIBarButtonItem * sortButton = [[UIBarButtonItem alloc] initWithTitle:@"Sort" style:UIBarButtonItemStyleBordered target:self action:@selector(sort)];

    self.navigationItem.rightBarButtonItem = sortButton;
    [sortButton release];

    //HIT WS TO SEE LAST UPDATED AND COMPARE TO STORED LAST UPDATED DATE
    //IF WS HAS NEWER DATE,BLOW CD AWAY AND CALL getRSSDAta

    self.searchBar.delegate = self;
    self.title = @"Results";
    self.navigationController.navigationBarHidden = NO;

    __tableView.delegate = self;
    __tableView.dataSource = self;
    searchedData = [[NSMutableArray alloc]init];
    tableData = [[NSMutableArray alloc]init];
    [tableData addObjectsFromArray:_PlaceArray];//on launch it should display all the records 

    [recurringArray initWithObjects:@"Alphabetical",@"Rating Low to High", @"Rating Hight to Low", nil];

    UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background_texture.png"]];

    self.view.backgroundColor = background;

    [background release];


    recurringDate = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 190, 320, 200)];
    recurringDate.showsSelectionIndicator = YES;
    recurringDate.delegate = self;
    [recurringDate selectRow:0 inComponent:0 animated:YES];
    [self.view addSubview:recurringDate];

    recurringDate.hidden = YES;

    NSLog(@"search text is %@", self.search);

    searchBar.text = self.search;
    [self searchBarSearchButtonClicked:searchBar];

}

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
    // only show the status bar’s cancel button while in edit mode
    useSearchData = YES;
    self.searchBar.showsCancelButton = YES;
    self.searchBar.autocorrectionType = UITextAutocorrectionTypeNo;
    // flush the previous search content
    [tableData removeAllObjects];
}

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar
{
    self.searchBar.showsCancelButton = NO;
}

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{

    if([searchText isEqualToString:@""] && [__searchBar.text isEqualToString:@""]){       //if nothing is in the search bar show normal table
        useSearchData = NO;
        [self.tableView reloadData];
        [self.searchBar resignFirstResponder];
        return;
    }
    else
    {
            searchText = __searchBar.text;

        useSearchData=YES;

        NSPredicate * p = [NSPredicate predicateWithFormat:@"name contains[cd] %@",searchText]; //comparing stored locations to searchText

        self.searchResults = [CoreDataBasicService fetchResultsForEnity:@"Place" WithPredicate:p andSortDiscriptor:@"name" Ascending:YES];

        [self.tableView reloadData];
    }
}

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
    useSearchData = NO;

    [self.searchResults removeAllObjects];
    [self.tableView reloadData];

    [self.searchBar resignFirstResponder];
    self.searchBar.text = @"";


}

-(void)searchBarSearchButtonClicked:(UISearchBar *)_searchBar
{
    [searchBar resignFirstResponder];
}

1 个答案:

答案 0 :(得分:0)

可能听起来很傻,但要确保你把它连接到IB,我忘了在我干扰某些代码时这样做