我正在使用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。
答案 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];
}