从两个不同的视图控制器更新表视图单元

时间:2015-04-15 15:53:16

标签: ios objective-c uitableview tableviewcell

我是IOS的新手,我正在研究UITableView。我想从两个不同的View Controller中填充表视图中的数据。我想要从View Controller更新cell.textLabel.textviewController1cell.detailTextLabel.text来自另一个View Controller说viewController2

我在tableView的右上方有一个按钮,然后点击它导航到View Controller A.我在View Controller A中有一个文本标签,它返回用户输入到tableView的内容。 当我单击单元格时,它会导航到View Controller B.我在View Controller B中也有一个文本标签。

这是我的tableView数据源方法

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    Names *namesToDisplay = [self.lists objectAtIndex:indexPath.row];

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    if (cell == nil) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    cell.textLabel.text = namesToDisplay.firstName;
    return cell;

}

其中NamesNSObject的模型类,而NSArray中的列表是tableView

如果我从单个View Controller更新cell.textlabel.textcell.detailtextlable.text,则可以使用View Controller1或View Controller2。

我可以从viewController2获取数据,但我应该在哪里cell.detailTextLabel.text

1 个答案:

答案 0 :(得分:0)

  1. 编码惯例...... http://en.wikipedia.org/wiki/Naming_convention_%28programming%29#Java是一个很好的方向。

  2. 看起来简单的参数处理。您可以在init进程中共享视图之间的信息。

  3. // your details view (vc2) header
    @class Names;
    
    @interface MyDetailsViewController
    {
        Names *names;
        // some variable declaration here
    }
    // maybe some properties...
    
    - (id)initWithObject:(Names *)p_names;
    // ...
    
    @end
    

    ...

    // your details view (vc2) main
    - (id)initWithObject:(Names *)p_names
    {
        if ((self = [super init]))
        {
            names = p_names; // so you have the data when the tableView is loading
        }
    }
    

    ...

    // your main view (vc1)
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        Names *namesToDisplay = [self.lists objectAtIndex:indexPath.row];
        MyDetailsViewController *viewController2 = [[MyDetailsViewController alloc] initWithObject:namesToDisplay];
        [self.navigationController pushViewController:viewController2 animated:YES];
    }
    

    如果还有其他问题,请准确提供更多信息;)