2012-03-26 76 views
0

我有一个分类表视图控制器。在我的应用程序中,类别可以有子类别。表查看疑惑

例如,衣服可以有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

,需要考虑你的问题两种方式。你想有一个单独的TableViewController (可能有多个实例),或者该类的单例实例

我会说后者比它的价值更麻烦。该工具包不是以这种方式工作的,所以它提供的所有快捷方式都成为您必须自己完成的工作 - 并且从中获得的最好结果是内存使用量的适度提高。 (更可能会引入错误,因为在重新配置相同实例以表示不同的数据时很容易错过某些内容。)

另一方面,重用单个视图控制器类是该工具包旨在帮助您与,因为它听起来像你已经使用故事板,你在一半。在你的prepareForSegue:sender:实现中,你总是会有一个destinationViewController - 所以你需要做的就是配置它来表示子类别(通过设置subcategory属性,它看起来像)。 (事实上​​,如果你使用storyboard segues,你会得到为你创建的类的新实例,无论你是否喜欢它......如果你真的想为单例方法去做,将不得不放弃赛格,这意味着你将失去内置的导航堆栈行为。)

+0

非常感谢rickster。我想我会尝试单身方法。 M的想法是重用类别视图为我需要的许多子类别,像“对自己的继承”,我不知道它是否存在。 – roof 2012-03-27 07:42:46