2015-08-31 21 views
0

我想從數組iOS中獲取EKEvent。但我有一個問題。如果我把我的代碼行放在viewDidLoad方法中,它就可以工作。從數組中獲取EKEvent iOS

但是,如果我從一個表視圖按鈕:(-(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]; 

} 

回答

1

這可能是因爲無論是小區或單元上的按鈕有一個EKEvent財產。

您的單元格從模型中加載。事件數據可能在模型中

如果您的按鈕或單元需要訪問事件數據,您必須決定數據如何流經您的應用程序。您還希望爲事件提供單一的事實來源,因此無論您的應用程序的狀態如何,無論是編輯還是更新,還是持續或刪除或插入事件,您都始終對事件的詳細信息保持肯定。

這些是您可能想要解決的問題,因此您非常瞭解您在何處以及如何存儲這些詳細信息,以及您的單元格按鈕應如何訪問活動記事。

+0

你有解決方案嗎? –

+0

您必須發佈更多代碼來顯示關於單元格及其按鈕的詳細信息,以便人們可以瞭解單元格和按鈕應實現的角色。 –

+0

我將我的完整代碼添加到說明中。 –