【问题标题】:Need Help Using Delegate To Change UITableView需要帮助使用 Delegate 更改 UITableView
【发布时间】:2011-08-07 20:40:07
【问题描述】:

我设置了一个委托方法,这样当用户从 VC2 中选择单元格时,它会更新 VC1 的标题文本然后弹回它。

现在我需要添加一些代码来更改在 VC1 中加载 UITableView 的数组,最简单的方法是什么?

在 VC 1 中

- (void)didChooseValue:(NSString *)string 
{
    self.databaseName = string;
    NSLog(@"Database Name: %@", self.databaseName);
    [self.myTableView reloadData];
}

在 VC 2 中 - didSelectRowAtIndex

if([delegate respondsToSelector:@selector(didChooseValue:)])
    {
        [delegate performSelector:@selector(didChooseValue:) withObject:myString];
    }

【问题讨论】:

  • 你问的是如何修改数组?
  • 不,我知道该怎么做,我想问如何设置一个委托方法,让我根据我从 VC 2 中选择的单元格修改 VC 1 中的数组。
  • 用什么方式修改数组?用户在 VC2 中选择了什么,它与 VC1 中呈现的数组内容有什么关系?
  • 在 V2 中,用户可以选择一个类别,如汽车制造商,然后它会弹回 V1,它应该为该制造商加载一个汽车型号表(数组)。
  • 我明白了。这些汽车模型来自哪里?内存中的硬编码数组?本地sqlite数据库?通过 JSON 或 XML 从远程服务器查询?如果是从本地或远程源查询,您是否已经有此代码工作?

标签: iphone objective-c xcode uitableview delegates


【解决方案1】:

您可以在此委托方法本身中添加代码。尝试类似:

- (void)didChooseValue:(NSString *)string 
{
    self.databaseName = string;
    NSLog(@"Database Name: %@", self.databaseName);
    NSMutableArray *carModels = nil;

    if([string isEqualToString:@"Mazda"])
        carModels = [[Database sharedDatabase] getMazdaModels]; 
    else if([string isEqualToString:@"Nissan"])
        carModels = [[Database sharedDatabase] getNissanModels]; //And so on depending on the number of models
    else
        carModels = [[Database sharedDatabase] getDefaultModels];

    self.carAray = carModels;
    [self.myTableView reloadData];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多