我正在尝试将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.
}
有人可以帮我吗?
答案 0 :(得分:2)
尝试直接指定帧点,如此
calendar.frame = CGRectMake(0, 0, 320,400);
答案 1 :(得分:1)
如果您使用Storyboard将TKCalendarMonthView添加到视图控制器,那么您也不应该在视图控制器的-viewDidLoad方法中初始化另一个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;
}
如果你这样做,你应该看到渲染的日历而不是空白视图。