将Tapku日历添加到应用程序

时间:2013-02-12 14:20:48

标签: iphone ios calendar storyboard tapku

我正在尝试将Tapku日历添加到我的应用中。我正在使用故事板,我添加了Tapku库,导入了必要的文件并添加了TKCalendarMonthViewDelegate方法。我将日历添加到名为calendarView的UIView中。当我运行应用程序时,日历不会出现,只有视图中没有任何内容。

-(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.
}

有人可以帮我吗?

2 个答案:

答案 0 :(得分:2)

尝试直接指定帧点,如此

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

答案 1 :(得分:1)

如果您使用Storyboard将TKCalendarMonthView添加到视图控制器,那么您也不应该在视图控制器的-viewDidLoad方法中初始化另一个TKCalendarMonthView实例。

在你的故事板中:

  • 将TKCalendarMonthView添加到视图控制器。
  • 设置大小限制。
  • 将TKCalendarMonthView连接到视图控制器中的插座(见下文)。

在视图控制器中:

为TKCalendarMonthView添加插座。

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

在-viewDidLoad中,连接TKCalendarMonthView的委托和数据源。注意,如果您首先将IBOutlet注释添加到TKCalendarMonthView.h中的委托和dataSource属性,您也可以在Storyboard中执行此操作

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

但是,仅这些更改不会使TKCalendarMonthView显示日历。原因是视图由Storyboard初始化,但在Storyboard加载时不会调用任何现有的-init方法。因此,您需要在TKCalendarMonthView.m中添加-initWithCoder:方法。以下示例将调用默认的-init:方法。

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

    }

    return self;
}

如果你这样做,你应该看到渲染的日历而不是空白视图。