2012-03-26 9 views
0

私はカテゴリテーブルビューコントローラを持っています。私のアプリでは、カテゴリはサブカテゴリを持つことができます。テーブルビューの疑問

たとえば、衣類には3つがありますが、書籍には誰もいない可能性があり、記事に直接行くことができます。

1つのカテゴリテーブルビューコントローラのみを実装し、カテゴリセルのクリックにサブカテゴリがある場合は、新しい値を再ロードするにはどうすればよいですか?

これは私が持っているものであるが、それは成功しませんでした:

- (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

あなたの質問を検討する2つの方法があります。単一のTableViewController クラス(場合によっては複数のインスタンス)、またはそのクラスのシングルトンインスタンスを持っていたいですか?

私は、後者はそれが価値よりも難しいと言いたいと思います。キットはこのように動作するようには設計されていないので、あなたが提供するショートカットはすべてあなたが自分でやる必要のある作業になります。これから得られる最高のものは、メモリ使用量の控えめな改善です。 (同じインスタンスを再構成して別のデータを表現するときに何かが見逃されやすいので、バグが導入される可能性が高いでしょう)

一方、単一のView Controllerクラスを再利用することは、あなたが既にストーリーボードを使用しているように聞こえるので、あなたはそこに途中です。 prepareForSegue:sender:の実装では、常にdestinationViewControllerが用意されているので、サブカテゴリを表すように設定するだけです(subcategoryプロパティを設定すると、そのように見えます)。

(実際には、あなたがストーリーボードセグを使用している場合は、あなたが好きかどうかにかかわらず、あなたのために作成されたクラスの新しいインスタンスが得られます...もしあなたが本当にシングルトンアプローチをしたいのなら、あなたは組み込みのナビゲーションスタックの振る舞いを失うことになります。)

+0

ありがとうございました。私はシングルトンアプローチを試みると思う。 Mアイデアは、必要なサブカテゴリのカテゴリビューを再利用することです。「自己へのセグ」のようなものです。存在するかどうかわかりません。 – roof