0

我将字符串从控制器A(选项卡栏中的第二项)传递给控制器​​B(选项卡栏中的第一项),将该字符串添加到数组并希望显示它。我调用了 reloadData 但表视图仍然是空的。我必须做什么才能让我的字符串显示在控制器 B 中?(这两个控制器连接到两个不同的导航控制器,我不想使用序列)。

这是一些代码://ControllerA

ControllerB *bController = [[ControllerB alloc]init];
bController.myString = self.cellLabel.text;
[tableController addButtonIsPressed];

//ControllerB.h
@property (copy, readwrite) NSString *myString;

//ControllerB.m

-(void)addButtonIsPressed {

[myData addObject:@"myString"]; //in NSLog I can see correct value of myString
[self.tableView reloadData];

}

现在我意识到当我在控制台中打印 myData 时它是空的。即使我在此方法中使用 viewDidLoad 中的值初始化 myData,它的 (null)..

4

2 回答 2

1

我们需要更多信息,但问题可能出在此处:

ControllerB *bController = [[ControllerB alloc]init];

您声明另一个控制器可能不是显示的同一控制器。因为我没有看到任何内容:[self displayModal ....] 你只是用正确的“mystring”创建了一个 B 控制器,但你正在显示另一个 B 控制器。

于 2012-06-29T15:35:53.093 回答
0

根据您的回答,这里有一些想法。希望能帮助到你:

  1. 当您有两个或多个视图控制器时,约定是父控制器通过设置其属性直接与子控制器对话。但是,当孩子想与父母交谈时,它通过使用委托来实现。

当您有两个并行控制器时也是如此,就像您的情况一样。他们不应该直接设置彼此的属性。他们应该使用委托。

  1. 此外,在您的情况下,ControllerB您实例化的实例与屏幕上的实例不同。这是一个新的!这是一个新的实例,ControllerB与屏幕上的实例完全无关。

如果您搜索,您可以找到几个如何进行委派的示例。

于 2012-06-29T16:00:31.840 回答