-1

I'm trying to reload a UITableViewwhen the row of a different UITableView'srow is selected. 我遇到的问题之一是两者的UITableView's观点相同。我想在 Table1 中进行选择以更改NSMutableArray用于填充 Table2 的选项。然后重新加载表。

目前它工作正常,但只有当应用程序重新启动(或视图从堆栈中弹出然后重新访问)并viewWillAppear再次被调用时

这是我的代码:

- (void) viewWillAppear:(BOOL)animated {
    [super viewWillAppear:NO];
    [self.navigationController setNavigationBarHidden:YES animated:NO];
    self.navigationController.toolbarHidden = YES;
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

    // getting an NSString
    selectedTableString = [prefs stringForKey:@"selectedTableString"];
    if ([selectedTableString isEqualToString:@"Italy"]) {
        jsonStringCountry = @"http://****/v1/public/cities?country=it";
    }
    else if ([selectedTableString isEqualToString:@"Spain"]) {
        jsonStringCountry = @"http://****/v1/public/cities?country=es";
    }
    else if ([selectedTableString isEqualToString:@"UK"]) {
        jsonStringCountry = @"http://****/v1/public/cities?country=uk";
    }
    else if ([selectedTableString isEqualToString:@"Brazil"]) {
        jsonStringCountry = @"http://****/v1/public/cities?country=br";
    }
    NSLog(@"from two t selectedTableString %@",selectedTableString);

    // Download the yoodeal JSON
    NSString *jsonString = [NSString stringWithContentsOfURL:[NSURL URLWithString:jsonStringCountry] encoding:NSStringEncodingConversionAllowLossy|NSUTF8StringEncoding error:nil];
    NSLog(@"jsonStringCountry is %@", jsonStringCountry);
    NSMutableArray *itemsTMP = [[NSMutableArray alloc] init];

    // Create parser for the yoodeal api
    SBJSON *parser = [[SBJSON alloc] init];
    NSDictionary *results = [parser objectWithString:jsonString error:nil];
    itemsTMP = [results objectForKey:@"results"];
    self.displayItems = [itemsTMP copy];
}

我的UITableView方法:

- (int)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}
- (int)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [displayItems count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MainCell"];
    if(cell == nil){
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"MainCell"];
    }

    // Get item from tableData
    NSDictionary *item = (NSDictionary *)[displayItems objectAtIndex:indexPath.row];
    cell.textLabel.text = [item objectForKey:@"name"];
    [cell.textLabel setFont:[UIFont fontWithName: @"Asap-Bold" size: 14.0f]];
    return cell;
}
4

4 回答 4

1

为表格视图创建出口

 [self.yourTableView reloadData];
于 2013-02-01T11:30:23.097 回答
1

使用[tablename reloadData];点击。

当您更新 tableview 内容时,它不会刷新视图。只有重新加载视图控制器后,您才能看到更改。要立即更新表格,您需要调用上面的代码

于 2013-02-01T11:34:47.233 回答
1

您应该创建一个名为 UITableView 的属性,secondTableView然后使用[secondTableView reloadData].

于 2013-02-01T11:35:20.803 回答
1

您需要使用UITablveView. 方法是:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

当您单击 的行时,将调用此方法UITableView。按以下方式使用它:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   if(tableView == Table1)
   {
        //do the changes in array you want to do.
        [table2 reloadData];
   }
   else
   {
        //do the changes in array you want to do.
        [table1 reloadData];
   }
}
于 2013-02-01T11:54:11.697 回答