javascript - 将 NSDate 传递给 iOS 中的本地 UIWebView - Objective C

标签 javascript ios objective-c uiwebview nsdate

我有一个带有菜单的应用程序,可以加载从本地 HTML 文件加载的各种 UIWebView。 (此代码在 WebViewController 中)

//Code for the WebView
vesperswebview.scrollView.bounces = NO;
[[vesperswebview scrollView] setBounces:NO];
[(UIScrollView*)[vesperswebview.subviews objectAtIndex:0] setShowsVerticalScrollIndicator:NO];

NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"data/html"];
NSURL *url = [NSURL fileURLWithPath:path];
NSString *theAbsoluteURLString = [url absoluteString];
NSString *queryString = @"#?manifest=Psalmody-Morning";
NSString *absoluteURLwithQueryString = [theAbsoluteURLString stringByAppendingString:queryString];
NSURL *finalURL = [NSURL URLWithString:absoluteURLwithQueryString];

NSURLRequest *request = [NSURLRequest requestWithURL:finalURL cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:(NSTimeInterval)10.0];
[vesperswebview loadRequest:request];

我还有一个名为 FlatDate Picker 的自定义日期选择器:(此代码在我的主 ViewController 中),它链接到我从 GitHub 获得的导入的 FlatDatePicker 开源项目。

- (void)flatDatePicker:(FlatDatePicker*)datePicker dateDidChange:(NSDate*)date {
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    NSCalendar *coptic = [[NSCalendar alloc] initWithCalendarIdentifier:@"coptic"];
    [dateFormatter setCalendar:coptic];
    [dateFormatter setDateStyle:NSDateFormatterLongStyle];

    if (datePicker.datePickerMode == FlatDatePickerModeDate) {
        [dateFormatter setDateFormat:@"EEEE, MMMM, dd, yyyy"];
    } else if (datePicker.datePickerMode == FlatDatePickerModeDate) {
        [dateFormatter setDateFormat:@"HH:mm:ss"];
    } else {
        [dateFormatter setDateFormat:@"EEEE, MMMM, dd, yyyy HH:mm:ss"];
    }
    NSString *value = [dateFormatter stringFromDate:date];
    self.labelDateSelected.text = value;
}

我的问题是,当我在主视图 Controller 中选择日期时,如何保存该日期并将其传递到下一个 View 以在我的数据库中加载适当的 日期敏感 Javascript ?

最佳答案

鉴于 FlatDatePicker 的外观,从中获取的日期可以转换为以下 JavaScript DateFormats

ISO Date "2015-03-25" (The International Standard)

Short Date "03/25/2015" or "2015/03/25"

Long Date "Mar 25 2015" or "25 Mar 2015"

NSDate 转换成这些格式。可以做到以下几点

NSDateFormatter *ISODateFormatter = [[NSDateFormatter alloc] init];
[ISODateFormatter setDateFormat:@"yyyy-mm-dd"];
    
NSDateFormatter *ShortDateFormatter = [[NSDateFormatter alloc] init];
[ShortDateFormatter setDateFormat:@"yyyy/mm/dd"];
    
NSDateFormatter *LongDateFormatter = [[NSDateFormatter alloc] init];
[LongDateFormatter setDateFormat:@"dd MMM yyyy"];
    
NSString *ISODate = [ISODateFormatter stringFromDate:date];
NSString *ShortDate = [ShortDateFormatter stringFromDate:date];
NSString *LongDate = [LongDateFormatter stringFromDate:date];

您可以将此日期保存在 selectedDate 变量中。然后,您可以像这样在 UIViewController 中拥有一个 init 属性

@interface JSViewController ()

@property (nonatomic, strong) NSString *currentDate;

@end

-(instancetype)initWithDate:(NSString *)jsDate {
     self = [super initWithNibName:NULL bundle:NULL];
     if (self) {
       _currentDate = jsDate;
     }
     return self;
 }

您可以通过以下方式从另一个ViewController 初始化和启动此ViewController

JSViewController *jsVC = [[JSViewController alloc] initWithDate:ISODate];
[self presentViewController:jsVC animated:YES completion:nil];

试试这个。如果它不起作用,请随时 ping 我。随时提出修改建议以使其变得更好。

关于javascript - 将 NSDate 传递给 iOS 中的本地 UIWebView - Objective C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39863866/

相关文章:

javascript - IE < 9 CSS3 过渡效果秘籍?

javascript - 使用 Node js每秒加载一次查询

ios - 如何根据我的 MKMapView 图片适本地调整缩放级别?

iphone - 与 AVAudioPlayer 同步播放 MPMoviePlayerController

ios - 如何跳出 IBAction?

javascript - 如何避免在简单的类名更改时重新渲染整棵树?

javascript - 使用上下文菜单将选定的文本作为 Firefox 附加组件发送到 url

ios - FBSDKPaymentObserver在做什么?以及如何禁用它?

ios - 将 UIFont 转换为 CTFontRef 并在 Retina 显示屏上添加斜体

ios - Xcode 用户为 JSON 服务定制 NSURL