Objective-C didSelectRowAtIndexPath和serge来查看控制器

时间:2015-09-08 20:12:46

标签: objective-c

我正在使用UITableViewController和didSelectRowAtIndexPath,如下所示:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    NSString *type = [[self.tableData objectAtIndex:indexPath.row] objectForKey:@"Type"];

if([type isEqualTOString: @"PDF"]){

   //GOTO View Controller

}else{


    NSArray *elements = [[[self.tableData objectAtIndex:indexPath.row] objectForKey:@"Name"] componentsSeparatedByString:@"FTP\\"];

    currentPath = [[[[self.tableData objectAtIndex:indexPath.row] objectForKey:@"Name"] componentsSeparatedByString:@"FTP\\"] lastObject];

    NSString *escapedString = [elements[1] stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]];


    self.tableData = [dataSource.areaData GetFilesAndDirectories:[NSString stringWithFormat:@"%@",escapedString]];

    [self.tableView reloadData];

  }
}

我正在尝试做什么?如果类型为PDF,则转到视图Controller,否则只需更新表视图。

目前,当我选择一行时,每次都会进入View Controller。

这就是我得到的:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *type = [[self.tableData objectAtIndex:indexPath.row] objectForKey:@"Type"];

    if([type  isEqualToString: @"Directory"]){

        NSArray *elements = [[[self.tableData objectAtIndex:indexPath.row] objectForKey:@"Name"] componentsSeparatedByString:@"FTP\\"];

        currentPath = [[[[self.tableData objectAtIndex:indexPath.row] objectForKey:@"Name"] componentsSeparatedByString:@"FTP\\"] lastObject];

        NSString *escapedString = [elements[1] stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]];

        self.tableData = [dataSource.areaData GetFilesAndDirectories:[NSString stringWithFormat:@"%@",escapedString]];

        [self.tableView reloadData];

    }else{

        [self performSegueWithIdentifier:@"showDetail" sender:self.view];

    }
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"showDetail"])
    {
        NSLog(@"Here");
    }
}

但每次都会进入View Controller。

1 个答案:

答案 0 :(得分:0)

是的,这是可能的。 在PDF中如果你应该创建你想要呈现的视图控制器,然后调用当前视图控制器的presentViewController:animated:completion:方法,传入你想要的PDF视图控制器。

编辑:我没有看到编辑的最后一句话。 我发现的唯一问题是isEqualToString函数中的错误类型以及您的类型字符串可能为零的可能性。

编辑2: 我添加了自己的代码示例。在这种情况下,视图总是打开,但是根据内容的不同而不同。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    NSInteger row = [indexPath row];

    locationData *locData;

    if (indexPath.section == 0) {
        locData= [self.sortEDlocations objectAtIndex:row];
    }
    else {
        if(_btnUrgentCareFilter.isSelected){
            locData = [self.filterSortOtherLocations objectAtIndex:row];
        }else{
            locData = [self.sortOtherLocations objectAtIndex:row];
        }
    }

    [self showDetailView:locData];

}
相关问题