-1

我正在一个名为 ResourcesTableViewController 的类中创建一个 TableViewController。我正在创建课程:

视图控制器.h:

@interface ViewController : UIViewController {
    ResourcesTableViewController *resourceTableViewController;

视图控制器.m:

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

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

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

在我的 ViewController.m 的几个部分(如预期的那样)具有相同的输出

<ResourcesTableViewController: 0x749f1c0> tableViewObjectContent

. 为了打开新的 TableView,我在情节提要中创建了一个带有弹出框到新视图的按钮(作为触发的 segue)。但是一旦按下按钮并出现视图,它就会创建一个新实例。奇怪的是,我放入了我的类 ResourcesTableViewController 的 viewDidLoad:

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

它正在返回

<ResourcesTableViewController: 0x74bbcd0>: (null)

. 另一个内存地址,另一个实例。不是我之前使用的实例,也绝对不是我给该 tableViewOject 的实例。如何从属于我创建和使用的 resourceTableViewController 的实例调用视图?我仍然可以通过与对象 resourceTableViewController 通信来访问那个“旧”实例,但是创建的视图是另一种类型的视图,它肯定不会从我给第一个对象的对象中使用。

4

1 回答 1

0

如何显示表格视图取决于您希望如何显示它,以及之前屏幕上的内容。通常,您会使用 segue 从当前控制器(您的按钮所在的控制器)转换到表格视图。为此,您可以使用 performSegueWithIdentifier:sender: 其中标识符参数是您在 IB 中为 segue 指定的名称。但是您可以通过控制从一个视图中的按钮拖动到表视图控制器的视图并为 segue 类型选择模态来完全不使用任何代码 - 然后,单击按钮将导致该表视图出现在屏幕上.

如果您使用情节提要,则根本不应该在代码中分配 init —— segue 会为您实例化新的视图控制器。

于 2012-10-02T04:47:39.363 回答