【问题标题】:Why can't dismiss the viewcontroller in didSelectRowAtIndexPath method为什么不能在 didSelectRowAtIndexPath 方法中关闭视图控制器
【发布时间】:2016-04-23 12:50:15
【问题描述】:

在我的应用程序中,它有两个视图。在第一个 ViewController 中有一个 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 进行搜索。在其中我根据用户输入调用网络服务。帮我解决这个问题

【问题讨论】:

  • 你是怎么来这第二个视图控制器的
  • 将第一个cell拖到新控件上,为Storyboard segue选择show
  • 你能试试modal吗?
  • 不,明白了。那是因为我没有 Embeded navigation controller.thanx 为您提供帮助 @AnkitSrivastava
  • 嵌入需要 push 和 pop 来实现功能。或带解雇的模态

标签: ios objective-c tableview uisearchcontroller dismiss


【解决方案1】:

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

  • 所以这个表视图有自己的委托和数据源方法 当您尝试在搜索栏中搜索任何内容时,搜索栏有自己的表格视图。
  • 此表有自己的委托和数据源方法。

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

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

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

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

【讨论】:

  • 在你提出这个问题之前,我已经解决了我的两个问题,我说这只是一个很好的解释。thanx 我再次为你投票。good work.thanx。
  • 非常感谢!!
猜你喜欢
  • 2015-11-23
  • 2010-11-26
  • 1970-01-01
  • 2015-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
相关资源
最近更新 更多