【问题标题】:Table View doubts表视图疑惑
【发布时间】:2012-03-26 21:11:10
【问题描述】:

我有一个类别表视图控制器。在我的应用中,类别可以有子类别。

比如衣服可以有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;

         }
  }

谢谢

【问题讨论】:

    标签: objective-c ios5


    【解决方案1】:

    有两种方法可以考虑您的问题。您想要一个 TableViewController class(可能还有多个实例),还是该类的单个 instance

    我会说后者麻烦多于其价值。该工具包并非旨在以这种方式工作,因此它为您提供的所有快捷方式都变成了您必须自己完成的工作——您从中获得的最大好处是对内存使用的适度改进。 (您很可能会引入错误,因为在重新配置相同的实例以表示不同的数据时很容易遗漏一些东西。)

    另一方面,重用单个视图控制器类是该工具包旨在帮助您解决的问题,因为听起来您已经在使用情节提要,所以您已经成功了一半。在您的prepareForSegue:sender: 实现中,您将始终拥有一个destinationViewController——因此您需要做的就是将其配置为代表子类别(通过设置其subcategory 属性,看起来像)。

    (事实上,如果您使用故事板转场,无论您喜欢与否,都会为您创建类的新实例......如果您真的想采用单例方法,您将必须放弃 segue,这意味着您将失去内置的导航堆栈行为。)

    【讨论】:

    • 非常感谢 rickster。我想我会尝试单例方法。 M 的想法是为我需要的尽可能多的子类别重用类别视图,类似于“自我分离”,我不知道它是否存在。
    猜你喜欢
    • 2017-01-30
    • 2018-04-01
    • 2020-11-02
    • 1970-01-01
    • 2017-02-16
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多