Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 目标C:如何在班级之间进行沟通?_Objective C_Ios_Oop - Fatal编程技术网

Objective c 目标C:如何在班级之间进行沟通?

Objective c 目标C:如何在班级之间进行沟通?,objective-c,ios,oop,Objective C,Ios,Oop,经过一项研究,我发现了西格尔顿可能对我有所帮助,但我在理解它是如何工作的方面遇到了一些问题。 我需要两个类相互通信,这里是一个示例: 我有一张桌子,视野是迪纳米克的。 这是我在viewController.h文件中的代码: -(void)ottieniMarche{ responseSimulate = [[NSArray alloc]initWithObjects:@"pollo",@"cane",@"gatto",@"verme",@"gallo",@"topo",@"ca

经过一项研究,我发现了西格尔顿可能对我有所帮助,但我在理解它是如何工作的方面遇到了一些问题。 我需要两个类相互通信,这里是一个示例: 我有一张桌子,视野是迪纳米克的。 这是我在viewController.h文件中的代码:

    -(void)ottieniMarche{

    responseSimulate = [[NSArray alloc]initWithObjects:@"pollo",@"cane",@"gatto",@"verme",@"gallo",@"topo",@"canguro",@"elefante",@"giraffa" ,nil];

}
现在我必须在mainTableView.m上发送此信息,我实际使用的代码如下:

    - (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization

        elementMainTableView = [[NSArray alloc]initWithObjects:@"aaa",@"bbb",@"ccc",@"ddd",@"eee",@"fff",@"ggg",@"hhh",@"iii" ,nil];

    }
    return self;
}

现在我必须用responseSimulate值更改elementMainTableView值。我的意思是,我的maintableView的内容与我的responseSimulate相同。

如果我正确理解了您的问题,您希望根据模型更改刷新
UITableView的内容

UITableView
需要符合
UITableView数据源
协议的类来提供其行和节数据。通常,这是一个
UITableViewController
,但不一定是。
UITableView
的数据源可能是您引用的其他类。在这种情况下,关键是要求重新加载数据,即更改数据时,
[tableView reloadData]

在您的情况下,如果
MainTableView
(我推断这实际上是一个
UITableViewController
子类…)符合
UITableViewDataSource
协议,那么您可以使用键值观察来解决问题,例如:(注意,本例假设您正在使用ARC。)

这假设您将
elementMainTableView
作为
MainTableView
上的属性公开

现在,在另一个类(?ViewController)中,您的方法:

-(void)ottieniMarche {
    responseStimulate = [[NSArray alloc] initWithObjects:@"pollo",@"cane",@"gato",nil];
    _mainTableViewController.elementMainTableView = responseStimulate;
}
为此,您需要使用
ViewController
来保留对
MainTableView
的引用,例如上面的
\u mainTableViewController

-(void)ottieniMarche {
    responseStimulate = [[NSArray alloc] initWithObjects:@"pollo",@"cane",@"gato",nil];
    _mainTableViewController.elementMainTableView = responseStimulate;
}