- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我已经使用以下步骤将 Tapku 日历库安装到我的项目中:Tapku Calendar demo does not work in xCode4/iOS5
太好了,导入就好了。没有错误,什么都没有。但是日历没有显示,即使是那些运行 loadView
功能的日历。出现切换按钮 [尽管在这种情况下我没有使用它们进行切换]。
重要说明:
此代码(来自实现):
NSLog(@"Toggle called!");
// If calendar is off the screen, show it, else hide it (both with animations)
NSLog(@"y and x = %f & %f", _calendar2.frame.origin.y, _calendar2.frame.origin.x);
NSLog(@"height and width = %f & %f", _calendar2.frame.size.height, _calendar2.frame.size.width);
正在屈服:
2012-12-11 17:16:46.294 MyApp[29078:c07] Toggle called!
2012-12-11 17:16:46.295 MyApp[29078:c07] y and x = 0.000000 & 0.000000
2012-12-11 17:16:46.295 MyApp[29078:c07] height and width = 0.000000 & 0.000000
注意 y 和 x 如何为零,即使我已将它们设置为 1。好像 _calender2 没有保存任何东西?
这是类:
日历控件 View .h:
#import <UIKit/UIKit.h>
#import "TKCalendarMonthView.h"
@interface CalendarViewController : UIViewController <TKCalendarMonthViewDelegate,TKCalendarMonthViewDataSource> {
TKCalendarMonthView *calendar;
struct CGRect cframe;
}
@property(strong, nonatomic) TKCalendarMonthView *calendar2;
@end
CalendarControlView.m
#import "CalendarViewController.h"
@implementation CalendarViewController
static int calendarShadowOffset = (int)-20;
@synthesize calendar2 = _calendar2;
#pragma mark -
#pragma mark View Lifecycle
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization.
_calendar2 = [[TKCalendarMonthView alloc] init];
_calendar2.delegate = self;
_calendar2.dataSource = self;
}
return self;
}
- (void)loadView {
// Costruct the view because we aren't using a
//int statusBarHeight = 20;
CGRect applicationFrame = (CGRect)[[UIScreen mainScreen] applicationFrame];
self.view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, applicationFrame.size.width, applicationFrame.size.height)];
//self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.view.backgroundColor = [UIColor grayColor];
// Add top left menu button to toggle calendar
UIImage *menuButtonImage = [UIImage imageNamed:@"btn-calendar.png"];
UIImage *menuButtonImageHighlighted = [UIImage imageNamed:@"btn-calendar-highlighted.png"];
UIButton *menuButton = [UIButton buttonWithType:UIButtonTypeCustom];
[menuButton setImage:menuButtonImage forState:UIControlStateNormal];
[menuButton setImage:menuButtonImageHighlighted forState:UIControlStateHighlighted];
menuButton.frame = CGRectMake(0, 0, menuButtonImage.size.width, menuButtonImage.size.height);
UIBarButtonItem *menuBarButton = [[UIBarButtonItem alloc] initWithCustomView:menuButton];
[menuButton addTarget:self action:@selector(toggleCalendar) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.leftBarButtonItem = menuBarButton;
//[menuBarButton release];
// Add view button to toggle calendar
UIButton *toggleButton = [[UIButton alloc] initWithFrame:CGRectMake(50, 300, 220, 50)];
toggleButton.backgroundColor = [UIColor darkGrayColor];
toggleButton.titleLabel.font = [UIFont systemFontOfSize:12];
toggleButton.titleLabel.textColor = [UIColor whiteColor];
[toggleButton setTitle:@"Toggle Calendar" forState:UIControlStateNormal];
[toggleButton addTarget:self action:@selector(toggleCalendar) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:toggleButton];
//[toggleButton release];
UIButton *toggleButton2 = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 220, 50)];
toggleButton2.backgroundColor = [UIColor darkGrayColor];
toggleButton2.titleLabel.font = [UIFont systemFontOfSize:12];
toggleButton2.titleLabel.textColor = [UIColor whiteColor];
[toggleButton2 setTitle:@"Toggle Calendar2" forState:UIControlStateNormal];
[toggleButton2 addTarget:self action:@selector(toggleCalendar) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:toggleButton2];
cframe = CGRectMake(1, 1, _calendar2.frame.size.width, _calendar2.frame.size.height);
// Add Calendar to just off the top of the screen so it can later slide down
_calendar2.frame = cframe;
// Ensure this is the last "addSubview" because the calendar must be the top most view layer
[self.view addSubview:_calendar2];
[_calendar2 reload];
[_calendar2 setHidden:NO];
_calendar2.alpha = 1.0;
NSLog(@"Done getting calender there!");
}
- (void)viewDidLoad {
[super viewDidLoad];
}
// Show/Hide the calendar by sliding it down/up from the top of the device.
- (void)toggleCalendar {
NSLog(@"Toggle called!");
// If calendar is off the screen, show it, else hide it (both with animations)
NSLog(@"y and x = %f & %f", _calendar2.frame.origin.y, _calendar2.frame.origin.x);
NSLog(@"height and width = %f & %f", _calendar2.frame.size.height, _calendar2.frame.size.width);
}
#pragma mark -
#pragma mark TKCalendarMonthViewDelegate methods
- (void)calendarMonthView:(TKCalendarMonthView *)monthView didSelectDate:(NSDate *)d {
NSLog(@"calendarMonthView didSelectDate");
}
- (void)calendarMonthView:(TKCalendarMonthView *)monthView monthDidChange:(NSDate *)d {
NSLog(@"calendarMonthView monthDidChange");
}
#pragma mark -
#pragma mark TKCalendarMonthViewDataSource methods
- (NSArray*)calendarMonthView:(TKCalendarMonthView *)monthView marksFromDate:(NSDate *)startDate toDate:(NSDate *)lastDate {
NSLog(@"calendarMonthView marksFromDate toDate");
NSLog(@"Make sure to update 'data' variable to pull from CoreData, website, User Defaults, or some other source.");
// When testing initially you will have to update the dates in this array so they are visible at the
// time frame you are testing the code.
NSArray *data = [NSArray arrayWithObjects:
@"2011-01-01 00:00:00 +0000", @"2011-01-09 00:00:00 +0000", @"2011-01-22 00:00:00 +0000",
@"2011-01-10 00:00:00 +0000", @"2011-01-11 00:00:00 +0000", @"2011-01-12 00:00:00 +0000",
@"2011-01-15 00:00:00 +0000", @"2011-01-28 00:00:00 +0000", @"2011-01-04 00:00:00 +0000",
@"2011-01-16 00:00:00 +0000", @"2011-01-18 00:00:00 +0000", @"2011-01-19 00:00:00 +0000",
@"2011-01-23 00:00:00 +0000", @"2011-01-24 00:00:00 +0000", @"2011-01-25 00:00:00 +0000",
@"2011-02-01 00:00:00 +0000", @"2011-03-01 00:00:00 +0000", @"2011-04-01 00:00:00 +0000",
@"2011-05-01 00:00:00 +0000", @"2011-06-01 00:00:00 +0000", @"2011-07-01 00:00:00 +0000",
@"2011-08-01 00:00:00 +0000", @"2011-09-01 00:00:00 +0000", @"2011-10-01 00:00:00 +0000",
@"2011-11-01 00:00:00 +0000", @"2011-12-01 00:00:00 +0000", nil];
// Initialise empty marks array, this will be populated with TRUE/FALSE in order for each day a marker should be placed on.
NSMutableArray *marks = [NSMutableArray array];
// Initialise calendar to current type and set the timezone to never have daylight saving
NSCalendar *cal = [NSCalendar currentCalendar];
[cal setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
// Construct DateComponents based on startDate so the iterating date can be created.
// Its massively important to do this assigning via the NSCalendar and NSDateComponents because of daylight saving has been removed
// with the timezone that was set above. If you just used "startDate" directly (ie, NSDate *date = startDate;) as the first
// iterating date then times would go up and down based on daylight savings.
NSDateComponents *comp = [cal components:(NSMonthCalendarUnit | NSMinuteCalendarUnit | NSYearCalendarUnit |
NSDayCalendarUnit | NSWeekdayCalendarUnit | NSHourCalendarUnit | NSSecondCalendarUnit)
fromDate:startDate];
NSDate *d = [cal dateFromComponents:comp];
// Init offset components to increment days in the loop by one each time
NSDateComponents *offsetComponents = [[NSDateComponents alloc] init];
[offsetComponents setDay:1];
// for each date between start date and end date check if they exist in the data array
while (YES) {
// Is the date beyond the last date? If so, exit the loop.
// NSOrderedDescending = the left value is greater than the right
if ([d compare:lastDate] == NSOrderedDescending) {
break;
}
// If the date is in the data array, add it to the marks array, else don't
if ([data containsObject:[d description]]) {
[marks addObject:[NSNumber numberWithBool:YES]];
} else {
[marks addObject:[NSNumber numberWithBool:NO]];
}
// Increment day using offset components (ie, 1 day in this instance)
d = [cal dateByAddingComponents:offsetComponents toDate:d options:0];
}
//[offsetComponents release];
return [NSArray arrayWithArray:marks];
}
#pragma mark -
#pragma mark Memory Management
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
- (void)viewDidUnload {
[super viewDidUnload];
}
- (void)dealloc {
//[super dealloc];
}
@end
我正在运行 XCode 4.5.2 和 iOS6
最佳答案
移动行:
_calendar2 = [[TKCalendarMonthView alloc] init];
_calendar2.delegate = self;
_calendar2.dataSource = self;
从 initWithNib...
到 loadView
的开头,然后将日历 View 添加到 Controller 的 View 中:
- (void)loadView {
[super loadView];
// Costruct the view because we aren't using a xib file
_calendar2 = [[TKCalendarMonthView alloc] init];
_calendar2.delegate = self;
_calendar2.dataSource = self;
[self.view addSubview:_calendar2];
// rest of the method unchanged....
确实,由于您没有使用 Nib ,因此不会调用 initWithNib...
; loadView
然后负责创建 View 。
关于objective-c - Tapku 日历不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13829640/
我想知道是否有一种简单的方法可以为网站制作自上而下的列表日历。我不想使用谷歌日历。我还希望日历像接下来的 5 个事件一样显示并隐藏其余事件,直到显示的 5 个事件已经发生。如果有办法用 jquery
我使用的是 Drupal 日历,它在除 IE7 之外的所有浏览器中都运行良好。在 IE7 中,不会呈现单个日历条目。 奇怪的是,如果页面加载缓慢,那么正确着色的表格单元格会出现然后消失。 这是我尝试过
我已经广泛使用了原型(prototype),并且不想添加像 YUI 这样的额外框架。 我需要一个 JavaScript 日历,它使我能够逐个单元格地自定义日历单元格的呈现。 (用于渲染特定日期的事件、
通过 Google API 浏览器,我可以使用日历 ID 访问我的公共(public)日历事件列表。所以我知道这是对的 https://developers.google.com/google-app
我是 CakePHP 的新手,想使用这个框架创建一个日历。我遇到了困难,想知道是否有关于如何使用 CakePHP 创建简单日历的教程或指南? 最佳答案 这里有两个链接:LINK1 (日历助手)和 LI
我正在寻找一个与 jquery week calendar 具有相同功能的 jquery 日历 我浏览了某些日历,但它们不包含jquery周日历的资源 这可能是一个愚蠢的问题,但我可以修改jquery
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以
我想问一下我是否可以将日历“移动”到页面的右侧?因为我意识到它只能显示在左手边。我真的不知道如何将它“移动”到右侧...我也不知道如何放入 css 来做到这一点。 这是制作日历的代码... //
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在构建一个月份列表,用作 JSP 中表格的标题。 我正在做的是比较我从数据库中获得的月份,并一直迭代或“尝试”到那个月。在这种情况下,月份是 11 月 问题是我只能从 2012 年 10 月到 2
我将开发一个支持多种语言的日历解决方案,但我不确定应该如何根据各个国家/地区的用户需要来管理和显示所有不同的假期信息? 有没有地方提供世界假期信息,以便我可以解析和显示?如果没有,您会推荐更好的开发方
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我试图让我的应用程序隐藏周末,我的日历存储在一个字符串中,然后打印到innerHTML。我该如何隐藏周六和周日。 我的日历打印如下: 周日周一周二周三周四周五周六 代码: calendarString
日历有可能从星期一开始吗?我在教程中找到了这个,但我的 JS 知识还不够。我改变了一些值但没有成功。 function Calendar(id, year, month) { var elem
我正在创建一个使用 iCal 格式日历的应用程序,很可能由 Google 存储在 Google 日历中。 实现这一目标的最佳方法是什么?我真的不想在 iOS 日历应用程序中导入我的日历。 我应该解决重
在应用程序中,我使用星期几来打开成就。 let date = Date() let dateFormatter = DateFormatter() dateFormatter.dateFormat =
我正在尝试在java中为日历对象设置自定义日期和时间。我必须创建一个比当前日期多 1 天的日期,并且时间应设置为“X”(例如 05:00:00)。 这是我到目前为止所做的: Calendar tomo
while (r.next()) { String rn = r.getString(3); String sqldate = r.getString(2); // database
我有一个日历,其中突出显示了一些日期 它工作得很好,直到我想突出显示 2013 年 3 月 31 日之后的日期。此后日期就正常显示。 有人知道为什么会这样吗? 这是我用来突出显示日期的代码 //
关于报警管理器的问题我有这个代码 Calendar cal = Calendar.getInstance(); cal.add(Calendar.SECOND, 5); Intege
我是一名优秀的程序员,十分优秀!