カスタムセルを使用してテーブルビューを実装しました。
1.カスタムセル
日付を表示するラベルとアラームを設定する UI スイッチを持つカスタム セル。
uiswitches をオンにすると、テーブル ビューは次のように表示されます。
2.テーブルビュー
When user scrolls down the table view the bottom switches are turned off
上にスクロールしても同じ問題。
なぜこの問題が発生するのですか?そしてそれを防ぐ方法は?
インデックス パス メソッドの行のセル
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// Note: I set the cell's Identifier property in Interface Builder to DemoTableViewCell.
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier] autorelease];
}
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
//To display custom cell with label and switch
if(indexPath.row< [appDelegate.alarmsArray count])
{
ReminderCell *cell = (ReminderCell *)[tableView dequeueReusableCellWithIdentifier:CellClassName];
if (!cell)
{
NSArray *topLevelItems = [cellLoader instantiateWithOwner:self options:nil];
cell = [topLevelItems objectAtIndex:0];
}
cell.reminderSwitch.tag = indexPath.row;
NSMutableDictionary *dict = [appDelegate.alarmsArray objectAtIndex:indexPath.row];
cell.label.text = [dict objectForKey:@"string"];
//=========================================
cell.reminderSwitch.on = NO;
//=========================================
return cell;
}
//Add + button on the last row of uitableview cell..
if(indexPath.row == [appDelegate.alarmsArray count])
{
UIButton *button = [UIButton buttonWithType:UIButtonTypeContactAdd];
button.frame = CGRectMake(114, 9.5, 33, 33);
[button addTarget:self action:@selector(AddNewRow:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:button ];
return cell;
}
return cell;
}