如何从另一个表视图中的一个表视图中显示字符串?

时间:2012-06-29 12:59:02

标签: objective-c uitabbarcontroller uitableview

我将来自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)..

2 个答案:

答案 0 :(得分:1)

我们需要更多信息,但问题可能在这里:

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

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

答案 1 :(得分:0)

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

  1. 当您有两个或更多视图控制器时,惯例是父控制器通过设置其属性直接与子控制器通信。但是,当孩子想要与父母交谈时,它通过使用委托来完成。
  2. 当你有两个并行控制器时,这是相同的,就像你的情况一样。 他们不应该直接设置彼此的财产。 他们应该使用委托。

    1. 另外,在您的情况下,您实例化的ControllerB实例与屏幕上的实例不同。这是一个新的!它是ControllerB的新实例,与屏幕上的实例完全无关。
    2. 如果您搜索,可以找到几个如何进行授权的示例。