0

我有一个应用程序,其中有一个将数据作为字典返回的 Web 服务调用。我想在另一个视图控制器中访问此字典,以将值加载到表中。

任何人都可以演示如何将此响应字典从一个视图控制器传递到另一个视图控制器吗?

4

2 回答 2

3

您可以在您的中定义一个NSDictionary属性AnotherViewController并从前一个控制器中设置它。我将在下面给出一个简单的例子。

//.h
@interface AnotherViewController {

  NSDictionary *data;
}
@property(nonatomic,retain) NSDictionary *data;
@end

//.m
@implementation AnotherViewController
@synthesize data;

现在从当前控制器开始,在初始化之后AnotherViewController设置字典,然后再呈现它。

AnotherViewController *controller = [[AnotherViewController alloc] init];
controller.data = myCurrentDictionary;

现在AnotherViewController有一个data具有前一个控制器值的属性。

希望这可以帮助。

于 2012-06-12T06:57:03.973 回答
1

我假设 Web 服务被调用是因为发生了一些事情(单击按钮,viewDidLoad/ viewDidAppear)。如果是这种情况,将 的引用传递UIViewController给 webservice 类是一个完美的有效选择。请记住,对于这种关系,您应该创建一个协议,因此在您的 web 服务类中,您有如下内容:

id<ViewControllerResponseProtocol> referenceToViewController;

ViewControllerResponseProtocol将定义一个这样的方法:

-(void)responseFromWebservice:(NSDictionary*)myDictionary;

因此,当 webservice 类构建时,NSDictionary您可以从以下方法中使用上述方法referenceToViewController

[referenceToViewController responseFromWebservice:myDictionary];

如果两者之间没有任何关系,则可以使用 can NSNotificationCenter

PS:skram 的解决方案是完全有效的,如果你已经NSDictionary从 web 服务中获得了初始值UIViewController,现在你想将它传递给一个新的UIViewController. 虽然我不认为那是你想要的。

于 2012-06-12T06:57:38.597 回答