需要创建日历的指导

时间:2010-09-23 11:56:40

标签: iphone objective-c cocoa-touch ios

我必须在我的iPhone应用程序中使用日历。我努力了,但在iPhone SDK中找不到任何内置的API用于此目的。现在我要自己创建日历,需要一些指导。

我创建了5行7个按钮(即总共35个按钮)并将其用作日期,然后我将添加其他图形的日期和月份。我已将这些按钮放在一个数组中,并将循环添加/更改它们的属性。

我怀疑这是否是正确的方法,或者是否有人可以向我提出更好的方法。

btnCal29=[[UIButton alloc]initWithFrame:CGRectMake(22.0f, 312.0f, 35.0f, 35.0f)];
btnCal30=[[UIButton alloc]initWithFrame:CGRectMake(62.0f, 312.0f, 35.0f, 35.0f)];
btnCal31=[[UIButton alloc]initWithFrame:CGRectMake(102.0f, 192.0f, 35.0f, 35.0f)];
btnCal32=[[UIButton alloc]initWithFrame:CGRectMake(142.0f, 192.0f, 35.0f, 35.0f)];
btnCal33=[[UIButton alloc]initWithFrame:CGRectMake(182.0f, 192.0f, 35.0f, 35.0f)];
btnCal34=[[UIButton alloc]initWithFrame:CGRectMake(222.0f, 192.0f, 35.0f, 35.0f)];
btnCal35=[[UIButton alloc]initWithFrame:CGRectMake(262.0f, 192.0f, 35.0f, 35.0f)];

arrCalendarbutton = [[NSMutableArray alloc] initWithObjects:btnCal1,btnCal2,btnCal3,btnCal4,btnCal5,btnCal6,btnCal7,btnCal8,btnCal9,btnCal10,btnCal11,btnCal12,btnCal13,btnCal14,nil];

for(int i = 0; i<[arrCalendarbutton count];i++)
{
    [(UIButton *)[arrCalendarbutton objectAtIndex:i] setBackgroundColor:[UIColor lightGrayColor]];
    [(UIButton *)[arrCalendarbutton objectAtIndex:i] addTarget:self action:@selector(cal) forControlEvents:UIControlEventTouchUpInside];
    [(UIButton *)[arrCalendarbutton objectAtIndex:i] setTitle:[NSString stringWithFormat:@"%d",i+1] forState:UIControlStateNormal];
    //[(UIButton *)[arrCalendarbutton objectAtIndex:i] setTitle:@"11" forState:UIControlStateNormal];
    [self.view addSubview: (UIButton *)[arrCalendarbutton objectAtIndex:i]];
}

我使用上面的代码来显示按钮(这里没有为所有按钮添加代码)。我当然会在以后的更改中更改按钮的标题,但现在我只专注于设计。

我是朝着正确的方向前进的吗?还有更好的方法吗?

2 个答案:

答案 0 :(得分:5)

也许你会发现这些链接很有用

我不会将每个按钮连接到命名变量。

这样做:

NSMuteableArray *array = [[NSMUteableArray alloc] init];

for(int i=0; i<31; i++){
    UIButton *b = ....;
    //customize b
    [array addObject:b];
    [b release];
}

如果要迭代一个数组,建议使用for-each 而不是

for(int i = 0; i<[arrCalendarbutton count];i++)

for(UIButton *b in arrCalendarbutton)

答案 1 :(得分:1)

同样的问题也有this answer