(已解决)ViewController类创build视图时创build新的实例,但它应该使用现有的一个

我在名为ResourcesTableViewController的类中创build一个TableViewController。 我正在创build类:

ViewController.h:

@interface ViewController : UIViewController { ResourcesTableViewController *resourceTableViewController; 

ViewController.m:

 resourceTableViewController = [[ResourcesTableViewController alloc] initWithStyle:UITableViewStylePlain]; [resourceTableViewController setTableViewObject:localObject]; 

现在我可以使用它,我可以打电话

 NSLog(@"%@ %@",resourceTableViewController,[resourceTableViewController tableViewObject]); 

在我的ViewController.m中的几个部分与(如预期的)相同的输出

 <ResourcesTableViewController: 0x749f1c0> tableViewObjectContent 

。 为了切换在故事板中创build的新的TableView,popup一个button到新的视图(触发的Segue)。 但是一旦按下button,视图就会出现,它会创build一个新的实例。 奇怪的是我把我的类ResourcesTableViewController viewDidLoad:

 NSLog(@"viewDidLoad: %@: %@", self, self.tableViewObject); 

它正在返回

 <ResourcesTableViewController: 0x74bbcd0>: (null) 

。 另一个内存地址,另一个例子。 不是我曾经使用过的实例,绝对不是我给tableViewOject的实例。 我怎样才能调用属于我创build和使用的resourceTableViewController的实例的视图? 我仍然可以通过与对象resourceTableViewController进行通信来访问这个“旧”的实例,但是创build的视图是另一种types的,当然不能从我给第一个对象的对象中使用。

如何显示表格视图取决于您想要如何显示,以及之前的屏幕显示内容。 通常情况下,您将使用一个segue从当前控制器(您所在的button所在的那个控制器)转换到表视图。 要做到这一点,你可以使用performSegueWithIdentifier:sender:其中标识符参数是你给IB中的segue的名字。 但是,通过控制从一个视图中的button拖动到表视图控制器的视图,并select模式的seguetypes,您可以完全没有代码 – 然后,点击button将导致该表视图出现在屏幕上。

如果你使用的是故事板,你不应该在你的代码中分配init,否则segue会为你实例化新的视图控制器。