ios - 使用[popviewcontroller]传回数据,并重新加载数据

标签 ios objective-c json poptoviewcontroller

http://imgur.com/2lAJmVd

在上面提供的图片中,显示了三个 View Controller 。

让我们按照显示顺序调用 View Controller ABC



View Controller A 通过单击表格单元格传递已解析的 jSON 数据。这会填写“总销售额、折扣等”。 View Controller B 中的字符串/标签使用 prepareForSegue 方法。

此数据基于开始时间/结束时间,执行 segue 时的默认参数提供当天上午 8 点到晚上 10 点的信息。

解析字符串看起来像这样

NSDate *currentDate = [NSDate date];
            NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init];
            [dateformatter setDateFormat:@"YYYY-MM-dd"];
            NSString *theDate = [dateformatter stringFromDate: currentDate];

NSString *salesStr = @"http://";
salesStr = [salesStr stringByAppendingString:host];
salesStr = [salesStr stringByAppendingString:@":8080/sales.php?password="];
salesStr = [salesStr stringByAppendingString:pass];
salesStr = [salesStr stringByAppendingString:@"&db="];
salesStr = [salesStr stringByAppendingString:db];
salesStr = [salesStr stringByAppendingString:@"&sdate="];
salesStr = [salesStr stringByAppendingString:theDate];
salesStr = [salesStr stringByAppendingString:@"%2008:00:00&edate="];
salesStr = [salesStr stringByAppendingString:theDate];
salesStr = [salesStr stringByAppendingString:@"%2022:00:00"];

View Controller B 内部,您会注意到一个标记为“Start Time”的按钮。此按钮启动 push segueView Controller C。在这个新的 View Controller 中,您可以选择日期和时间,它会显示在日期选择器上方的 UILabel 中。日期选择器下方的按钮是 IBAction 并使用

[self.navigationController popViewControllerAnimated:YES];



我的问题是:我如何能够在 View Controller C 中选择一个日期/时间,按下一个按钮,然后发送它位于 UILabel 中的信息到 View Controller B 以便它可用于更新已解析的信息?

我能想到的一种方法是让按钮转到 View Controller B,然后根据日期/时间选择重新解析信息,但这只会导致太多“导航 Controller 堆叠”,对我来说似乎效率不高。

如有任何建议,我们将不胜感激。

最佳答案

黑客的方法会奏效。

Apple 的文档提出了一种略有不同的技术。使用 View Controller C 可以用来与 View Controller B 通信的方法定义一个简单的协议(protocol)。

然后给 View Controller C 一个符合该协议(protocol)的委托(delegate)属性。

在您的 prepareForSegue 方法中,将您自己设置为 View Controller C 的委托(delegate)。

然后,在 View Controller C 中,当用户更改日期并单击按钮时,调用委托(delegate)方法通知 View Controller B 用户在弹出自己之前更改了日期值。

我还建议添加一个取消按钮,这样用户就可以放弃他们的更改。在这种情况下,您只需在弹出之前跳过调用委托(delegate)方法。

关于ios - 使用[popviewcontroller]传回数据,并重新加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24026359/

相关文章:

objective-c - timeIntervalSinceDate 给出 exc_bad_access 或 autorelease 错误

ios - GLONASS 数据和越狱的 iOS

iphone - 带有 DONE 按钮的 UIPickerView

javascript - 将 Laravel 集合/数组转换为 Javascript 数组

javascript - 从多个 getJSON 响应返回对象

java - 在 Hibernate 中获取表列名称

ios - 对 Swift 中的闭包参数感到困惑

ios - 当我在 swift 框架中使用 Bridging Headers 时失败

objective-c - 如何在IOS中使用Graph API获取收件箱的所有线程

iphone - 将 UITextField 添加到 UITableViewCell