拨打相同的视图""目标C中的时间

时间:2014-07-02 17:48:23

标签: ios objective-c cocoa-touch tableview

我希望你能就我的问题给我一个建议:     我有一个视图控制器关联到一个类。     我尝试使用相同的viewcontroller来显示不同的信息。' n'时     我的视图包含:imageview和table(在表格中显示结果)    为什么一样? --->因为结构相同:名称和图像

实施例:   1-子类别:衣服,鞋子   2--如果你选择"衣服"它显示:连衣裙,牛仔裤,衬衫。   3--如果你选择了#34; Dresses"它显示:晚礼服,短礼服等   我不知道它什么时候停止,因为它取决于所选的子类别是否有更多要显示的元素。   我控制它,当视图没有要显示的元素时,我发送其他视图,这不是我的问题。

哪个问题? - 问题是我调用相同的视图并且我的数组保持最后接收的值,   如果我想回来(因为我使用导航控制器),我不能选择其他值。

基于previos示例:     - 我选择了"衣服" (它有3个结果)     - 现在我要回来了,我想要选择"鞋子"    出现:    ' * 由于未捕获的异常终止应用' NSRangeException',原因:' - [__ NSCFArray objectAtIndex:]:index(1)超出bounds(1)& #39;'入门

这是因为我的最后一个数组有3个项目,而我按下的单元格有2个。

// ---------MY CODE IS:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *cat, *nom;
    cat = AId[indexPath.row];
    nom = ACateg[indexPath.row];
    [self wsCategorias: @"0" dato2: cat];

    if(existe == FALSE ){
        [NSThread detachNewThreadSelector:@selector(cargando:) toTarget:self withObject:nil];
        // ------ my process
    }
    else {
        /************************************** CALLING THE SAME VIEW ****************/

        Subcategoria1 *sub = [self.storyboard instantiateViewControllerWithIdentifier:@"Sub1"];
        sub.idCat = cat;
        sub.nomCat = nom;

        [self.navigationController pushViewController:sub animated:YES];
    }
}

如何使用相同的视图,但每个视图保持正确的值?必须创建新的观点吗?

1 个答案:

答案 0 :(得分:1)

所以你要做的是推送和弹出视图控制器看起来相同,但包含不同的数据和一个内部具有不同值的数组。

根据您设置视图控制器的方式,您需要做的是每次要推送到新部分时都要实例化一个新视图控制器。

  • 如果您使用的是Storyboard,则可以为视图控制器提供标识符并以编程方式对其进行实例化。
  • 如果您使用的是NIB,则可以从NIB初始化控制器。
  • 如果您以编程方式实例化控制器,那么只需将代码编写为alloc / init,然后您将拥有一个新的控制器。

无论您实例化视图控制器的是谁,都需要为您选择的每个子类别添加一个新视图控制器。

例如,假设您要从显示

的主列表中进行操作
  • 牛仔裤
  • 连衣裙
  • 附件

然后你选择牛仔裤并希望展示其子项目:

  • 成人牛仔裤
  • 儿童牛仔裤

你要做的是实例化一个新的视图控制器,传入subitems数组数据(在这个例子中包含' Adult Jeans'和#39; Kids Jeans')并推送它进入你的导航堆栈。这样,当您点击后退按钮时,iOS将自动返回到您所在的位置,您可以根据需要无休止地重复使用相同的视图控制器和UI。