Таблица Просмотр сомнений - PullRequest
0 голосов
/ 27 марта 2012

У меня есть контроллер представления таблицы категорий. В моем приложении категории могут иметь подкатегории.

Например, в одежде может быть 3 человека, но, возможно, в книгах никого нет, и они идут прямо к статьям.

Как я могу сделать, чтобы реализовать только один контроллер табличного представления категорий, и перезагрузить его с новыми значениями, если в ячейке категории нажата подкатегория?

Это то, что у меня есть, но оно не было успешным:

- (void) loadCategories{

    NSString *urlStr;

    if (self.subCategoria){

       urlStr =  [NSString stringWithFormat:@"http://webservic.es/articulos.php?idc=%@&store=0", self.subCategoria];
    }else{

       urlStr = @"http://webservices.es/articulos.php";

    }

    NSLog(@"URL:%@", urlStr);


    NSURL *url = [NSURL URLWithString:urlStr];

    NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url
                                                           cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
                                                       timeoutInterval:10.0];

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{

         categoria *categoria = [self.categoriasArray objectAtIndex:self.tableView.indexPathForSelectedRow.row];

         if (categoria.subcategoria){
             self.subCategoria = categoria.subcategoria;
             [self viewDidAppear:YES];
             [self.tableView reloadData];
         }else{
             ArticulosController *articulosController =segue.destinationViewController;
             articulosController.id_categoria = categoria.id_categoria;

         }
  }

Спасибо

1 Ответ

1 голос
/ 27 марта 2012

Есть два способа рассмотреть ваш вопрос. Вы хотите иметь один TableViewController класс (и, возможно, несколько его экземпляров) или один экземпляр экземпляра этого класса?

Я бы сказал, что последняя доставляет больше хлопот, чем стоит. Этот комплект не предназначен для такой работы, поэтому все ярлыки, которые он предоставляет, превращаются в работу, которую вам придется выполнять самостоятельно - и лучшее, что вы получите от этого, - это скромное улучшение использования памяти. (Скорее всего, у вас появятся ошибки, потому что при переконфигурировании одного экземпляра для представления разных данных легко что-то упустить.)

С другой стороны, повторное использование одного класса контроллера представления - это то, что разработано для того, чтобы помочь вам в этом, и, похоже, вы уже используете раскадровки, вы на полпути. В вашей реализации prepareForSegue:sender: вы всегда будете иметь destinationViewController - так что все, что вам нужно сделать, это настроить его для представления подкатегории (установив его свойство subcategory, оно выглядит так).

(На самом деле, если вы используете сегменты раскадровки, вы получаете новые экземпляры своего класса, созданные для вас, нравится вам это или нет ... если вы действительно хотите использовать одноэлементный подход, вы придется отказаться от перехода, что означает, что вы потеряете поведение встроенного стека навигации.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...