【问题标题】:Using 2 Custom UITableViewCells on a UITableView and a different NSArray in each在一个 UITableView 上使用 2 个自定义 UITableViewCells 和一个不同的 NSArray
【发布时间】:2014-12-05 06:48:04
【问题描述】:

大约 7 周前,我刚刚开始使用 Objective C 进行编程,目前正面临这一挑战。

我正在制作一个简单的电子商务应用程序,其中包含两个类(自行车和附件)中的产品对象。用户可以选择要添加到购物车的对象(子类 ChosenBicycle 和 ChosenAccessory)。

这些对象被传递给 ShoppingCartViewController,它在 UITableView 上有两个自定义单元格。

将所选对象添加到我的 UITableView 的最佳方法是什么?

我正在考虑为每个唯一命名的单元格设置一个不同的数组,或者它是一个 cartArray(不确定我将如何在 cellForRow 中分布...如果对象属性来自两个不同的类?)?

我希望这是有道理的。

【问题讨论】:

  • These objects are passed to ShoppingCartViewController, which has two custom cells on a UITableView.为什么要使用两个单元格,请添加一些代码以使其更清晰。
  • @VinayJain 我将两个不同的数组从 BicycleViewController 和 AccessoryViewController 传递给了这个 ShoppingCartViewController。自行车和附件对象具有不同的属性。我认为将它们保存在单独的单元格/数组中可能是有意义的(我对每个单元格的不同属性使用不同的标签)。
  • 如果你使用类,那么为了区分对象,你可以使用对象的class 属性并检查当前对象的类是什么

标签: ios objective-c iphone xcode uitableview


【解决方案1】:

您不应该真的需要 ChosenBicycle 和 ChosenAccessory 子类。您可以只拥有一个可变数组,您可以在用户将 Bicycle 或 Accessory 对象添加到购物车时将它们添加到该数组中。将此数组传递给 ShoppingCartTableViewController。

对于表格视图,使用单个自定义单元格。如果自行车单元格的 UI(用户界面)与附件的不同,则将两者所需的 UI 组件添加到同一个单元格中并显示/通过更改与 UI 组件对应的 UIView 的 alpha 值,根据单元格包含的产品(自行车/配件)隐藏 UI 组件。

【讨论】:

  • 对于您的第一点:我最初尝试在 ShoppingCartViewController 的 viewDidLoad 中执行此操作(但将其注释掉,因为它似乎使应用程序崩溃)。代码是这样的吗(传入我的 2 个数组,将对象组合成 2 个数组): self.shoppingCartArray = [NSMutableArray arrayWithArray:self.theChosenBike.passTheBikeArray]; [self.shoppingCartArray addObject:testAccessory];我认为当 testAccessory 为 nil 时它会崩溃(这意味着用户只选择了一辆自行车添加到购物车,没有配件)。将尝试第二个建议,谢谢。
【解决方案2】:

在 ShoppingCartViewController 的 cellForRowAtIndexPath 方法中,您可以检查对象类型并相应地填充单元格。

    if ([anObject isKindOfClass:[Bicycle class]]) {

}
   else {

}

【讨论】:

  • 谢谢,我在想 if..else.. 应该可以工作,但想不出要使用什么样的逻辑。将对此进行调查。
【解决方案3】:

创建一个 NSMutableArray 并为您的购物车命名为 cartArray

添加两个类的对象。

现在在 cellForRowAtIndexPath 中检查对象的类:

Class currentObjectClass = [[cartArray objectAtIndex:indexPath.row].class];

if (currentObjectClass == "BicycleClass"){
    //write code for Bicycle cell
}
else {
    //write code for Accessory cell
}
return cell;

【讨论】:

  • 效果很好。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-01
  • 1970-01-01
相关资源
最近更新 更多