Iphone 如何在ViewCcontroller的第二个视图中使用第一个ViewController的已解析元素?

Iphone 如何在ViewCcontroller的第二个视图中使用第一个ViewController的已解析元素?,iphone,uiviewcontroller,ios5,uitableview,Iphone,Uiviewcontroller,Ios5,Uitableview,在我的应用程序中,我向服务器发送一个GET,并收到一些响应。除了主视图控制器类之外,我还有TavView和TableViewController类。我在主ViewController中进行解析,并希望使用从第一个ViewController收到的结果填充TableViewCells。我还想显示名为DetailViewController的新ViewController中任何单元格的详细信息。现在,视图中的任何导航都可以按照我的要求工作。去查看WWDC 2011的播客 我相信这是正确的视频,它会证

在我的应用程序中,我向服务器发送一个
GET
,并收到一些响应。除了主视图控制器类之外,我还有TavView和TableViewController类。我在主ViewController中进行解析,并希望使用从第一个ViewController收到的结果填充TableViewCells。我还想显示名为
DetailViewController
的新
ViewController
中任何单元格的详细信息。现在,视图中的任何导航都可以按照我的要求工作。

去查看WWDC 2011的播客


我相信这是正确的视频,它会证明你到底在寻找什么。他们改进了UITableView,并在ios5的IB情节提要中添加了许多功能。这将有助于演示如何在一个视图控制器中获取数据,并在另一个UIViewtable控制器中显示数据。

请查看WWDC 2011的播客


我相信这是正确的视频,它会证明你到底在寻找什么。他们改进了UITableView,并在ios5的IB情节提要中添加了许多功能。这将有助于演示如何在一个视图控制器中获取数据,并在另一个UIViewtable控制器中显示数据。

我将阅读您在上面的评论中提供的代码,但同时我认为这对您有很大帮助。这是一种在视图之间发送信息的方法,因此您可以在一个视图中解析数据,并使用此技术轻松地将数据发送到另一个视图。

我将阅读您在上面的评论中提供的代码,但同时我认为这对您有很大帮助。这是一种在视图之间发送信息的方法,因此您可以在一个视图中解析数据,并使用此技术轻松地将数据发送到另一个视图。

Well@ilhançetin根据您在上面评论中的请求,这里对我提出的解决方案进行了更深入的解释

首先,如果您不知道什么是分片数据模型,那么共享数据模型是我们在项目中定义的一个类,我们创建了它的
静态
实例。由于该实例是静态的,这意味着它一直存在于我们所有的类中。我们使用这个静态实例在项目中的不同类之间共享信息,就像您在问题中需要的一样。例如,如果您觉得需要将字符串值从一个类发送到一个类,则可以将
NSString
成员放入共享实例中。下面是我们如何处理共享实例:

.h文件(假设我的类名为
MyDataModel
):

从现在起,在我们的程序中,在需要访问此共享字符串的任何类中,我们将导入“MyDataModel.h”,并通过以下方式访问字符串:
[MyDataModel sharedInstance].stringToBeShared
。现在我们已经准备好了共享机制,接下来我们将了解如何在另一个视图中填充表

在您的代码中有一条注释,内容如下:

//i want to populate TableViewCells with the messID and the details of each cell(push in new view controller) will contain 'content' above
在这一行中,您要求做两件事,但在代码的这一部分中只能做一件事。现在,我们将填充表格,在表格视图中,当您单击一行时,我们将推送所需的详细信息

为了能够填充表,我们需要一个函数,该函数将在表所在的同一类中进行填充。让我们把它命名为
populateTable
。那么,当我们在不同的类中时,我们将如何调用此函数,我们将向谁发送
mesid
值?要发送
mesid
我们将使用共享实例,因此您将添加保存
mesid
值所需的内容。现在要调用
populateTable
,我们将使用通知中心(在我之前发布的回答中描述)

通知中心是一种用于调用不同类中函数的机制。因此,在包含
populateTable
的类中,您将在
viewDidLoad
中向其添加一个侦听器,如下所示:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(populateTable) name:@"DoPopulateTable" object:nil];
我们将使用字符串
@“DoPopulateTable”
调用此侦听器。现在,在您的循环中,您将做两件事:

  • 在共享实例中存储
    mesid
  • 调用
    populateTable
    使用:
    [[NSNotificationCenter defaultCenter]postNotificationName:@“DoPopulateTable”对象:nil userInfo:nil]
  • 这样,您就按照要求填充了表。我们错过什么了吗?是您稍后将推送的完整数据。如果数据很重要并且在关闭设备后需要,则必须将其存储在sqlite3数据库中。如果不是(我将演示不是!),您可以将信息存储在
    NSMutableDictionary
    中,其中该字典的键是
    mesid
    (以便在单击表时能够检索它们),表的值是
    NSArray
    s,其中每个数组包含您需要的所有信息

    现在,当您想要在包含该表的视图中推送信息时,可以使用
    [youraryname objectAtIndex:theIndexYouWant]
    调用数组中的每个元素


    我希望这对你有帮助,记住,一点也不头痛;)

    Well@ilhançetin根据您在上述评论中的要求,这里对我提出的解决方案进行了更深入的解释

    首先,如果您不知道什么是分片数据模型,那么共享数据模型是我们在项目中定义的一个类,我们创建了它的
    静态
    实例。由于该实例是静态的,这意味着它一直存在于我们所有的类中。我们使用这个静态实例在项目中的不同类之间共享信息,就像您在问题中需要的一样。例如,如果您觉得需要将字符串值从一个类发送到一个类,则可以将
    NSString
    成员放入共享实例中。下面是我们如何处理共享实例:

    .h文件(假设我的类是nam
    //i want to populate TableViewCells with the messID and the details of each cell(push in new view controller) will contain 'content' above
    
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(populateTable) name:@"DoPopulateTable" object:nil];