我将来自controllerA的字符串(标签栏中的第二项)传递给controllerB(标签栏中的第一项),将该字符串添加到数组并想要显示它。我调用了reloadData但是表视图仍然是空的。我需要做什么才能让我的字符串显示在controllerB中? (这两个控制器连接到两个不同的导航控制器,我不想使用seque)。
这里有一些代码: // 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时它是null。即使我在此方法中使用viewDidLoad中的值初始化myData(null)..
答案 0 :(得分:1)
我们需要更多信息,但问题可能在这里:
ControllerB *bController = [[ControllerB alloc]init];
您声明另一个控制器可能与显示的控制器不同。 因为我没有看到任何:[self displayModal ....] 你正在创建一个带有正确“mystring”的B控制器,但你正在显示另一个B控制器。
答案 1 :(得分:0)
根据您的回答,这里有一些想法。希望它有所帮助:
当你有两个并行控制器时,这是相同的,就像你的情况一样。 他们不应该直接设置彼此的财产。 他们应该使用委托。
ControllerB
实例与屏幕上的实例不同。这是一个新的!它是ControllerB
的新实例,与屏幕上的实例完全无关。如果您搜索,可以找到几个如何进行授权的示例。