ビューを視覚的にレイアウトできるように、既存のプロジェクトをストーリーボードを使用するように変換しようとしています。ただし、プログラムでいくつかのビューを他のビューにロードする必要があります。
(補足として..私はFlashActionScriptでプログラミングしていましたが、iOSでのプログラミングはまったく新しいもので、Objective-Cの入門書しか持っていなかったので、解決しようとしている途方もない「穴」がいくつかあります) 。
私のレイアウトは次のようなものです。
カレンダーには、セルを作成するためのサブビュー('gridView')があります。私はもともとこのビューをプログラムで作成し、カレンダーセル(日付を示す四角)に独自のサブビューを追加しました。gridViewをストーリーボードに正常に追加しましたが、カレンダーセル(gridViewによってプログラムで追加されたもの)が表示されます。正しい日付をカレンダーに表示することができましたが、ストーリーボードを使用して壊れており、プログラムでgridViewの作成に戻る必要があるかどうか、または実際にやりたいことを実行できるかどうかを判断しようとしています。ストーリーボード。
だからここに私は立ち往生しています:
gridViewでは、draw rectを使用して、すべてのセルサブビューを作成します。
// lay down the individual cells to build the calendar
// 7 days across x 6 weeks down
const CGSize gCellSize = {self.frame.size.width/7, (self.frame.size.height-20)/6};
for(int w=0;w<6;w++) //6 weeks in the calendar
{
for(int d=0;d<7;d++) //7 days in a week
{
// ------------------ setting up the CELLVIEW ----------------------//
CGRect calendarCellRect=CGRectMake(d*gCellSize.width,w*gCellSize.height+20, gCellSize.width, gCellSize.height);
CalendarCellView *cellView=[[CalendarCellView alloc] initWithFrame:calendarCellRect];
[self addSubview:cellView];
}
}
これが私の問題です。プログラムですべてを作成すると、gridViewが親ビューのサブビューとして読み込まれ、cellViewが適切にレイアウトされました。gridViewがロードされた後、親ビューは、これらのサブビューをループし、各cellViewに適切な日付を追加するメソッド(displayDates-gridView内)を続行します。
しかし、gridViewをストーリーボードに追加したので、displayDatesメソッドを呼び出す前に、セルのサブビューがロードされていることを確認する必要があります。
-(void)displayDates:(NSArray *)selectedMonthDates previousMonthVisibleDates:(NSArray *)previousMonthDates followingMonthVisibleDates:(NSArray *)followingMonthVisibleDates
{
int cellNum=0;
NSArray *displayDates[]={previousMonthDates,selectedMonthDates,followingMonthVisibleDates};
for (int i=0; i<3; i++)
{
for (NSDate *d in displayDates[i])
{
CalendarCellView *cell=[self.subviews objectAtIndex:cellNum];
[cell resetState]; //initialize all properties within the CellView
cell.date=d; // set the cell's date property to be equal to the respective date collected from the displayDate array
cellNum++;
}
}
[self setNeedsDisplay];
}
では、gridViewのdrawRectがすべてのサブビューを追加したことを確認してから、それらのサブビューに日付を追加する方法を教えてください。