Ayarlar uygulaması gibi gruplandırılmış bir tablo görünümü kullandığınızı varsayalım. Yaptığım şey, üst ve alt grup bölümleri arasında, 'saydam' bir satır hücresi eklediğim, dinamik olarak boyutlandırdığım bir grup bölümü oluşturdu.
Sabit kodlanmış değerler kullanmanız için basit bir demo hazırladım, ancak umarım fikrinizi alırsınız.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 3;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
int rtn = 0;
if (section == 0)
rtn = 4;
else if (section == 1)
rtn = 1;
else if (section == 2)
rtn = 1;
return rtn;
}
/*
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return 44.0f;
}
*/
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
int TOTALCELLS = 6;
float CONSTANT = 0.5f;
if (indexPath.section == 1)
return self.view.frame.size.height - (44.0f * (CONSTANT + TOTALCELLS));
return 44.0f;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease];
}
if (indexPath.section == 0)
{
if (indexPath.row == 0) {
cell.textLabel.text = @"My Switch";
UISwitch *boolSwitch = [[UISwitch alloc]initWithFrame:CGRectZero];
boolSwitch.on = YES;
[cell setAccessoryView:boolSwitch];
[boolSwitch release];
} else if (indexPath.row == 1) {
cell.textLabel.text = @"My TxtField";
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
UITextField *txtField = [[UITextField alloc]initWithFrame:CGRectMake(0,0,175,20)];
txtField.text = @"Default Value";
txtField.textColor = [UIColor darkGrayColor];
[txtField setClearButtonMode:UITextFieldViewModeAlways];
[cell setAccessoryView:txtField];
[txtField release];
} else if (indexPath.row == 2) {
cell.selectionStyle=UITableViewCellSelectionStyleNone;
UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(0,0,280,22)];
slider.minimumValue = 0.0f;
slider.maximumValue = 10.0f;
slider.value = 0.7f;
slider.minimumValueImage = [UIImage imageNamed:@"minus.png"];
slider.maximumValueImage = [UIImage imageNamed:@"plus.png"];
[cell setAccessoryView:slider];
[slider addTarget:self action:@selector(sliderChange:forEvent:) forControlEvents:UIControlEventValueChanged];
[slider release];
} else if (indexPath.row == 3) {
cell.textLabel.text = @"My MultiValue";
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
cell.detailTextLabel.text = @"Default selection";
}
} else if (indexPath.section == 1) {
UIView *transCell = [[UIView alloc] initWithFrame:CGRectZero];
transCell.backgroundColor = [UIColor clearColor];
cell.backgroundView = transCell;
[transCell release];
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
} else if (indexPath.section == 2) {
cell.textLabel.text = @"Legal";
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
return cell;
}
kritik parçalar şeffaf satır oluşturulur cellForRowAtIndexPath, içinde şunlardır: Açıkçası bölümlerin sayısını ve veri yapısından satır sayısını almak istiyorum. Buradaki hile, hücrenin arka planına saydam görünümü eklemek ve hücre seçim stilini Yok olarak ayarlamaktır.
UIView *transCell = [[UIView alloc] initWithFrame:CGRectZero];
transCell.backgroundColor = [UIColor clearColor];
cell.backgroundView = transCell;
[transCell release];
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
ve heightForRowAtIndexPath içinde
, şeffaf sıranın dinamik boyutlandırma. Saydam olanlar da dahil olmak üzere tüm hücrelerin toplamı TOTALCELLS'dir. Hücre sayısı görünür olanın ötesine büyürse ne olduğunu göz önünde bulundurmadığı için, bu algoritma üzerinde ek çalışma yapmanız gerekebilir ve bunu çeşitli gezinme ve araç çubukları kombinasyonlarıyla test etmedim.
Umarım bu sizin için çalışır. Size Not-

da sadece dinamik boyutlandırma ihmal ve varsayılan yüksekliği (44.0f) –
rica ederim de, orta gruba şeffaf bir hücre sayısını ekleyebilir. Bu çözümü takdir ederseniz, çok teşekkür ederim ;-) –
Büyük çözüm, çünkü sadece işe yarıyor – Tony