-3

如何将参数从一个 ViewController 传递到另一个(我在情节提要中定义了 ViewControllers)?Android中是否有类似putExtra的东西,或者任何Bundle来放置值?我需要从第一个 ViewController 读取一些值并传递给另一个将发出 POST 请求的值。

4

3 回答 3

5

prepareForSegue:sender:是使用情节提要时将数据从一个视图控制器传递到另一个视图控制器的首选方式。检查标识符以确保它是您感兴趣的 segue,获取指向目标视图控制器的指针,并设置您想要的任何属性。它可能看起来像这样:

- (void) prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender
{
    if( [[segue identifier] isEqualToString:@"foo"] ) {
        FooViewController* fooView = segue.destinationViewController;
        fooView.someProperty = self.someProperty;
    }
}

去年 WWDC的Storyboard 会议很值得一看,如果您还没有看过的话。

于 2012-08-19T01:39:09.110 回答
4

这很简单。您需要在第二个视图控制器中创建一个属性,并将值从第一个视图控制器传递给这些属性

于 2012-08-19T00:11:57.823 回答
0

除了其他方式,您可以使用协议和委托将对象从一个控制器传递到另一个控制器。假设您需要将对象 resposeData 从控制器(类)A 传递到 B,以下是您可以执行的步骤:

  1. 声明一个协议,例如。

    @protocol NetworkOperationDelegate

    @必需的

    -(void) operationCompleted:(id) responseData tag:(id) tag;

    -(void) operationFailed:(id) responseData tag:(id) tag;

    @结尾

  2. 在类 A 中声明一个 Id 类型的属性,它指向你的委托类

    @property (nonatomic, retain) id < NetworkOperationDelegate > operationDelegate;

  3. 假设你在你的自定义初始化器中初始化 self.delegate:

    -(id) initWithRequest:(NSURLRequest *)request operationDelegate:(id) delegate tag:(id) tag

     {
    
     self = [super init];
      if (self) {
       self.request = request;
       self.tag = tag;
       self.operationDelegate = delegate;
     }
     return self;
    

    }

  4. 然后在您想在 A 类中定义时调用您的委托上的方法:假设 A 类何时收到数据,而您希望 B 类处理收到的数据

  5. 确保在 B 类 @interface B 中实现协议方法:NSObject @end

    @implementation B
    
    -(void) operationCompleted:(id) responseData tag:(id) tag
    {
    
    // imlement code
    

    }

    -(void) operationFailed:(id) responseData tag:(id) tag {

     // imlement code
    

    }

    @end
    

希望这可以帮助!!!

于 2012-08-19T19:57:57.127 回答