UINavigationController Детализация с представлением таблицы - PullRequest
1 голос
/ 20 декабря 2010

У меня есть UITableView, в котором указано содержимое моего каталога документов.У меня есть несколько почтовых файлов в этом.Если я коснусь файла в UITableView, соответствующий zip-файл будет распакован и извлечен во временный каталог (NSTemporaryDirectory()).

Проблема заключается в том, как перемещаться по содержимому, которое я извлек в tableView.Если предположить, что извлеченный zip-файл содержит папки, я должен иметь возможность просматривать их в виде таблицы.На самом деле поток должен быть похож на детализацию.

Я могу извлечь zip-файлы, но проблема в том, чтобы перейти к ним в UITableView.

Это моя didSelectRowAtIndexPath: часть:

NSString *filePath = //filePath;
if ([[NSFileManager defaultManager]fileExistsAtPath:filePath]) {
    NSLog(@"File exists at path: %@",filePath);         
} else {            
    NSLog(@"File does not exists at path: %@", filePath);       
}               

NSString *tmpDir =NSTemporaryDirectory();       
ZipArchive *zip = [[ZipArchive alloc] init];
BOOL result = NO;

if ([zip UnzipOpenFile:filePath]) {
    //zip file is there
    if ([zip UnzipFileTo:tmpDir overWrite:YES]) {
        //unzipped successfully
        NSLog(@"Archive unzip Success");
        result= YES;
    } else {
        NSLog(@"Failure To Extract Archive, maybe password?");
    }   
} else  {
    NSLog(@"Failure To Open Archive");
}       

if ([[NSFileManager defaultManager] fileExistsAtPath:tmpDir isDirectory:&isDir] && isDir) {
    NSLog(@"Its Folder");
    //Prepare to tableview.             
    RootViewController *rvController =[[RootViewController alloc]initWithNibName:@"RootViewController"bundle:[NSBundle mainBundle]];
    [self.navigationController pushViewController:rvController animated:YES];
}

Но это не работает.Он помещает то же содержимое в каталог документов в tableView.

1 Ответ

1 голос
/ 20 декабря 2010

Вам необходимо использовать UINavigationController, который будет обрабатывать детализацию. Каждая развертка представляет собой новый UITableViewController.

Вам нужен второй подкласс UITableViewController, который будет обрабатывать отображение файлов, содержащихся в zip. Может иметь свойство NSString, которое представляет собой полный путь к папке zip. Он использует список файлов в этом каталоге в качестве источника данных.

Добавьте исходный tableView (контроллер) в rootView UINavigationController при запуске. Когда вы нажимаете на tableView, в котором перечислены файлы zip, вы помещаете в UINavigationController ваш второй UITableViewController со ссылкой на извлеченные файлы (новая папка?).

[UINavigationwController pushViewController:nextTableView animated:YES];

См. Этот пример устаревшего кода от Apple о развертывании UINavigationController. Также проверьте документы по UINavigationController от Apple.

...