我有一个类别表视图控制器。在我的应用中,类别可以包含子类别。
例如,衣服可以有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;
}
}
由于
答案 0 :(得分:1)
有两种方法可以考虑您的问题。您想要一个TableViewController 类(可能还有多个它的实例),或者该类的单个实例吗?
我会说后者比它的价值更麻烦。该工具包不是以这种方式工作的,因此它为您提供的所有快捷方式都成为您必须自己完成的工作 - 而您从中获得的最佳效果是内存使用量的适度改进。 (更有可能你会引入错误,因为在重新配置相同的实例来表示不同的数据时很容易错过。)
另一方面,重用单个视图控制器类是该套件旨在帮助您的东西,并且因为听起来您已经在使用故事板,所以您已经到了一半。在prepareForSegue:sender:
实现中,您将始终拥有destinationViewController - 所以您需要做的就是将其配置为表示子类别(通过设置其subcategory
属性,它看起来像)。
(事实上,如果你正在使用故事板赛段,那么无论你喜欢与否,你都会为你创建新课程的实例......如果你真的想采用单身方法,你会必须放弃segue,这意味着你将失去内置的导航堆栈行为。)