0

在一个视图中,我有这个结构 vista1 UIView -> tabla1 UITableView -> tabla1_controller UITableViewController vista2 UIView -> tabla2 UITableView -> tabla2_controller UITableViewController

I use views because depending of the orientation I move around the views.

Everything works fine, each tableviewcontroller gets data from sqlite and show the custom cells.

I want to add a behavior, when the user selects a cell in the second table, I want to change the content of the first table.

The first tableView gets information from a NSArray, how do I change 
So how can I make this happen?

这是第二个 tableviewcontroller


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

        /* I dunno how to reference the nsarray of the first table here */
        first_table_array = ....

        [tabla1 reloadData];        
    }

在这种情况下,有两个 tableviewcontroller,但真正的问题是,如何从一个 viewcontroller 执行另一个 tableviewcontroller 的函数/更改变量?

例如,在 tabla2_controller (UITableViewController) 中,当用户单击 table2 的一行时,如果两个表都在各自的视图中并且两个视图同时显示,我该如何执行 [tabla1_controller reload]?

4

1 回答 1

1

在 tabla2_controller 中,创建一个如下所示的变量

在 .h 文件中

@property (nonatomic, retain) UITableViewController *table1Ref;

在 .m 文件中

@synthesize table1Ref;

然后,当您创建 tabla2_controller 时,将 tabla1_controller 设置为此变量的值,如下所示。

tabla2_controller *t2c = [[UITableViewController alloc] init];
t2c.table1Ref = t1c; //t1c is tabla1_controller

现在,在 tabla2_controller 的 didSelectRowAtIndexPath 中,执行以下操作。

tabla1_controller *t1c = self.table1Ref;
[t1c.tableView reloadData];
于 2012-12-22T13:23:16.137 回答