用户从日历中选择日期时更新UITableView

时间:2015-09-22 22:53:31

标签: ios objective-c xcode uitableview object

我在尝试拨打UITableView而不是其他方法时遇到了一些麻烦。

基本上我想让我的代码执行此操作:

- 当用户点击日历上的某个日期时,它会更新UITableView并用某个对象(即餐厅)填充它。

- 我相信代码逻辑应该进入我的(VRGCalendarView *)calendarView dateSelected方法。但是,我无法访问tableData

#import "VRGViewController.h"

@interface VRGViewController ()

@end

@implementation VRGViewController{
    NSArray *calendarTableData;
}

- (void)viewDidLoad
{
   [super viewDidLoad];
   // Do any additional setup after loading the view, typically from a nib.

   VRGCalendarView *calendar = [[VRGCalendarView alloc] init];
   calendar.delegate=self;
   calendar.center = self.view.center;
   [self.view addSubview:calendar];
   [self calendarTableViewData];
}

#pragma mark - Calendar Code

-(void)calendarView:(VRGCalendarView *)calendarView switchedToMonth:(int)month targetHeight:(float)targetHeight animated:(BOOL)animated {
    if (month==[[NSDate date] month]) {
      NSArray *dates = [NSArray arrayWithObjects:[NSNumber numberWithInt:1],[NSNumber numberWithInt:5], nil];
      [calendarView markDates:dates];
    }
}

-(void)calendarView:(VRGCalendarView *)calendarView dateSelected:(NSDate *)date {
    NSLog(@"Selected date = %@",date);

    **//When ever a user clicks on a data in the calendar, the date will be NSLogged. I think that my logic should go here for when a user clicks on the date it will update the tableview - however I am unable to access the tableData which is specified in another method**

   //[tableData reloadData];

}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}


#pragma mark - User Defined Table View Methods

-(void)calendarTableViewData{
    calendarTableData = [[NSArray alloc]initWithObjects:@"Egg Benedict", @"Mushroom Risotto", @"Full Breakfast", @"Hamburger", @"Ham and Egg Sandwich", @"Creme Brelee", @"White Chocolate Donut", @"Starbucks Coffee", @"Vegetable Curry", @"Instant Noodle with Egg", @"Noodle with BBQ Pork", @"Japanese Noodle with Pork", @"Green Tea", @"Thai Shrimp Cake", @"Angry Birds Cake", @"Ham and Cheese Panini", nil];
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
   return [calendarTableData count];
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
   static NSString *simpleTableIdentifier = @"Services";
   UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

   if (cell == nil) {
      cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
    cell.textLabel.text = [calendarTableData objectAtIndex:indexPath.row];

    return cell;
}


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

   UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
   NSLog(@"You have selected: %@",cell.text);
}


@end

1 个答案:

答案 0 :(得分:1)

<强>解决

我的代码遇到的问题在iOS社区的帮助下得到了解决。问题是我在UITableView填充viewDidLoad()而不是创建@property (strong, nonatomic) IBOutlet UITableView *tableView;