【发布时间】:2012-10-02 01:46:28
【问题描述】:
我正在一个名为 ResourcesTableViewController 的类中创建一个 TableViewController。我正在创建课程:
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
。为了打开新的 TableView,我在情节提要中创建了一个带有弹出框到新视图的按钮(作为触发的 segue)。但是一旦按下按钮并出现视图,它就会创建一个新实例。奇怪的是,我放入了我的类 ResourcesTableViewController 的 viewDidLoad:
NSLog(@"viewDidLoad: %@: %@", self, self.tableViewObject);
它正在返回
<ResourcesTableViewController: 0x74bbcd0>: (null)
。另一个内存地址,另一个实例。不是我之前使用的实例,也绝对不是我给该 tableViewOject 的实例。 如何从属于我创建和使用的 resourceTableViewController 的实例调用视图?我仍然可以通过与对象 resourceTableViewController 通信来访问那个“旧”实例,但是创建的视图是另一种类型的视图,它肯定不会从我给第一个对象的对象中使用。
【问题讨论】:
-
您是否还在情节提要中创建了表格视图控制器?
-
是的,我做到了。我创建了一个表视图控制器并将其正确分配给我的类 ResourcesTableViewController。
-
我不能让这个视图成为某种静态的吗?
-
我认为您的问题是在代码和情节提要中创建控制器,这就是您获得 2 个不同实例的原因。在不了解您要做什么的情况下,我不确定如何解决它。例如,“打开新的 TableView”是什么意思?
-
我不认为我在代码和情节提要中都创建了控制器,我只是创建了类,然后在情节提要中创建了控制器并将其分配给类。所以我使用了“ResourcesTableViewController *resourceTableViewController;”在我的 ViewController.h 中访问这个故事板创建的表视图控制器。这不应该是这样吗? (是的,我是 XCode 的新手,正在编写我的第一个应用程序,但这已经是一篇学士论文,所以我需要完成这项工作。)您在我的问题上看到的更多代码让我想到了这个问题:stackoverflow.com/questions/12675288
标签: ios xcode cocoa-touch