1

好吧,假设我有两个视图控制器“ViewControllerA”和“ViewControllerB”。我正在做的是当在 viewControllerA 中按下按钮时,我的本地服务器返回一个值并将其存储在变量“用户”中。之后,我将此变量传递给 viewControllerB。

实际上我可以成功地完成这两个过程,但不能同时完成。我的意思是我可以接收来自服务器的响应并将其存储在字符串变量中。我通过使用委托方法来做到这一点:

 - (void)connectionDidFinishLoading:(NSURLConnection *)connection 

所以这边没有问题。

另一方面,我也可以使用以下方法将变量从 viewControllerA 传递给 viewControllerB:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if([segue.identifier isEqualToString:@"vcSegue"]){
        ViewControllerB *controller = (ViewControllerB *)segue.destinationViewController;
        controller.stringVariable = @"content of the string";
    }
}

我的想法是,当我想将我拥有的字符串变量从服务器传递到 viewControllerB 时,我遇到了一个变量为空的问题。那么如何控制推送动作呢?因为我的理解是-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender应该在- (void)connectionDidFinishLoading:(NSURLConnection *)connection我的意思之后工作,我应该成功地从服务器获得响应,然后应该执行推送操作,但我不知道该怎么做。感谢您提供任何帮助。

4

1 回答 1

2

您可能需要考虑允许 ViewController B 通过可能传递一个 ID 并让它自己调用来加载它自己的详细数据。您可以在加载数据时显示进度 HUD。

如果你想传递一个标识符,你可以使用自定义的 init 函数:

- (id)initWithEvent: (NSString *) identifier
{
    self = [super init];
    if (self) {
        // Custom initialization
        theIdentifier = identifier;                
     }
      return self;
}
于 2013-04-11T14:30:12.303 回答