为什么不能在didSelectRowAtIndexPath方法中解除viewcontroller

时间:2016-01-18 11:07:24

标签: ios objective-c tableview uisearchcontroller dismiss

在我的应用中,它有两个视图。在第一个tableview中有一个tableview。当第一个单元格从tableview中选择时,它会加载另一个tableview的视图使用搜索选项。然后来自viewcontroller中的搜索结果,在我选择一个单元格后,视图应该被忽略。

  • 我的第一个问题是我无法从搜索结果中选择一个单元格。我必须点按两次。
  • 我的第二个问题是不能诋毁- (void)updateSearchResultsForSearchController:(UISearchController *)searchController { NSString *enteredString = searchController.searchBar.text; if ([enteredString length] >= 3) { [self getAirportCodesFromWebService:enteredString]; } [self.airportTable reloadData]; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [airportArray count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { GetAirportTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"reuse" forIndexPath:indexPath]; GetAirport *getAirports = [airportArray objectAtIndex:indexPath.row]; cell.AirportName.text = getAirports.AirportName; return cell; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { GetAirport *getAirports = [airportArray objectAtIndex:indexPath.row]; NSString *selectedAirport = getAirports.AirportName; [[NSUserDefaults standardUserDefaults] setObject:selectedAirport forKey:@"selectedairport"]; [[NSUserDefaults standardUserDefaults] synchronize]; [self dismissViewControllerAnimated:YES completion:nil]; }

这是我的代码

UISearchController

我以编程方式使用<title用于searh.inside我根据用户输入调用web服务。帮助我这个

1 个答案:

答案 0 :(得分:3)

首先,在第二个视图控制器中,您有一个带有搜索栏的tableview。

  • 所以这个tableview有自己的代表&amp;数据源方法 当您尝试在搜索栏中搜索任何内容时,搜索栏会有自己的桌面视图。
  • 此表有自己的代表&amp;数据源方法。

希望你能区分tableview委托人和数据源方法正确。

从搜索表视图中选择任何单元格时,您应该调用

[self.searchDisplayController setActive:NO animated:YES];

这将关闭您的搜索结果表视图,并导航到您的控制器视图。