使用自定义委托实现条件segue

时间:2014-01-20 07:17:18

标签: ios iphone objective-c delegates storyboard

我正在使用故事板。它有一个登录VC,成功推送到另一个VC。当用户输入凭据并单击登录按钮时,它会命中服务器。我已经实现了包含命令服务器的所有逻辑在一个具有委托的单独的类中。当我们得到响应时,控件转到登录VC中实现的委托方法。在委托方法中,如果状态为成功,则只需将登录VC推送到另一个VC。

在Login VC中

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender
{
   Util *util = [[Util alloc]init];
   util.delegate = self;

   NSMutableDictionary *request = [[NSMutableDictionary alloc]init];
   [request setValue:uname.text forKey:@“username”];
   [request setValue:pwd.text forKey:@“password”];
   [util body:request];
}

当服务器返回响应时,它将转到Login VC

中实现的委托方法
- (void)response:(NSDictionary *)response
{
    //here i am going to check the status if it is success i will go to new VC else in same VC 
}

这里我不能去另一个VC,因为我不在shouldPerformSegueWithIdentifier:方法中。

2 个答案:

答案 0 :(得分:0)

你为什么不打电话

 [self performSegueWithIdentifier:@"customerView" sender:self];

答案 1 :(得分:0)

看起来你可能在点击登录按钮时触发你的segue。如果您需要等待Web服务的响应,则无法执行此操作。相反,请在发送登录请求时尝试将按钮连接到方法。收到回复后,您可以检查用户的登录信息是否有效,然后以编程方式执行您的回复:

- (void)response:(NSDictionary *)response
{
    if (something) // check if response is valid
    {
        [self performSegueWithIdentifier:@"YourSegueIdentifier" sender:self];
    }
    else
    {
        // show error
    }
}

这样,您根本不需要实现shouldPerformSegueWithIdentifier:sender: