Question

I am trying to add the Tapku calendar to my app. I am using storyboards, I have added the Tapku library, imported the necessary files and add the TKCalendarMonthViewDelegate methods. I am adding the calendar to a UIView called calendarView. When I run the app the calendar doesn't appear, just the view with nothing inside it.

-(void)viewDidLoad
{
[super viewDidLoad];
[self.navigationController setNavigationBarHidden:NO animated:YES];

self.navigationItem.hidesBackButton = YES;
calendar =  [[TKCalendarMonthView alloc] init];
calendar.delegate = self;
calendar.dataSource = self;
calendar.frame = CGRectMake(0, 0, calendar.frame.size.width, calendar.frame.size.height);

// Ensure this is the last "addSubview" because the calendar must be the top most view layer
[self.view addSubview:calendar];
[calendar reload];

// Do any additional setup after loading the view.
}

Can anyone help me please?

Was it helpful?

Solution

try by specifing frame points directly,like this

calendar.frame = CGRectMake(0, 0, 320,400);

OTHER TIPS

If you're adding TKCalendarMonthView to your view controller using a Storyboard, then you should not also be initializing another instance of TKCalendarMonthView in your view controller's -viewDidLoad method.

In your Storyboard:

  • Add a TKCalendarMonthView to your view controller.
  • Set the size contraints.
  • Connect TKCalendarMonthView to the outlet (see below) in your view controller.

In your view controller:

Add an outlet for the TKCalendarMonthView.

@interface YourViewController () <TKCalendarMonthViewDataSource, TKCalendarMonthViewDelegate>
@property (weak, nonatomic) IBOutlet TKCalendarMonthView *calendarMonthView;
@end

In -viewDidLoad, connect TKCalendarMonthView's delegate and data source. Note, you can also do this in the Storyboard if you first add the IBOutlet annotate to the delegate and dataSource properties in TKCalendarMonthView.h

@implementation YourViewController
...
- (void)viewDidLoad
{
    [super viewDidLoad];
...
    self.calendarMonthView.delegate = self;
    self.calendarMonthView.dataSource = self;

However these changes alone will not get the TKCalendarMonthView to display the calendar. The reason is that the view is getting initialized by the Storyboard but none of the existing -init methods are called when loaded by the Storyboard. So you will need to add an -initWithCoder: method to TKCalendarMonthView.m. The following example will call the default -init: method.

-(id)initWithCoder:(NSCoder *)aDecoder
{
    self = [self init];
    if (self) {

    }

    return self;
}

If you do all this, you should see the rendered calendar instead of a blank view.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top