我想从数组iOS获取EKEvent。但是我有一个问题。如果我将代码行放在viewDidLoad
方法中,它将起作用。
但是,如果我从表视图的按钮中进行操作:(-(IBAction)button:(UiButton *)sender)
它会得到EKEvent,但不会记录该事件。
那就是我的代码:
EKEvent *event =[eventArray objectAtIndex:0]
NSString *string = event.notes
那就是完整的代码:
- (void)viewDidLoad {
selectedDate = [NSDate date];
[super viewDidLoad];
EKEventStore *store = [[EKEventStore alloc] init];
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
if (granted == NO) {
UIViewController *controller = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"needAccess"];
[self.view addSubview:controller.view];
[self addChildViewController:controller];
}
}];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *start = [calendar dateBySettingHour:0 minute:0 second:0 ofDate:selectedDate options:0];
NSDate *end = [calendar dateBySettingHour:0 minute:0 second:0 ofDate:[selectedDate dateByAddingTimeInterval:60*60*24] options:0];
NSPredicate *predicate = [store predicateForEventsWithStartDate:start endDate:end calendars:nil];
eventArray = [store eventsMatchingPredicate:predicate];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [eventArray count];
}
- (UITableViewCell *)tableView:(UITableView *)table cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [table dequeueReusableCellWithIdentifier: @"EventCell"];
EKEvent *event = [eventArray objectAtIndex:indexPath.row];
UIButton *headline = (UIButton *)[cell viewWithTag:1];
headline.layer.cornerRadius = headline.frame.size.width / 2;
headline.clipsToBounds = YES;
headline.tag = indexPath.row;
[headline addTarget:self action:@selector(headlineButton:) forControlEvents:UIControlEventTouchUpInside];
return cell;
}
-(void)headlineButton:(UIButton*)sender {
EKEvent *event = [eventArray objectAtIndex:0];
NSArray *notes = [event.notes componentsSeparatedByString:@"//"];
NSString *latitude = [notes objectAtIndex:1];
NSString *longitude = [notes objectAtIndex:2];
}
最佳答案
这可能是因为该单元格或该单元格上的按钮都没有EKEvent
属性。
您的单元是从模型加载的。事件数据可能在模型中
如果您的按钮或单元需要访问事件数据,则必须确定数据如何流经您的应用程序。您还希望有一个事件的真实来源,因此,无论您的应用程序处于什么状态,您都始终可以确定事件的详细信息,无论是编辑,更新,保留还是删除或插入事件。
这些是您可能要解决的问题,因此您可以很好地理解这些详细信息的存储位置和存储方式,以及单元格按钮应如何访问事件记录。
关于ios - 从数组iOS获取EKEvent,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32320971/