当检查为真且不可见时,当检查为假时,表格单元格中的按钮可见。
以下是该功能的一部分:
BOOL checked = [self checkObjekt:object];
if (checked == YES ) {
[cell.buttonUpload setHidden:NO];
[cell.buttonUpload setTitle:@"Geprüft, Upload!" forState:UIControlStateNormal];
[cell.buttonUpload setEnabled:YES];
} else {
[cell.buttonUpload setHidden:YES];
[cell.buttonUpload setTitle:@"Ungeprüft" forState:UIControlStateNormal];
[cell.buttonUpload setEnabled:NO];
}
我已经证明来自对象的数据是否正确。并且在所有数据库中值都是true或yes,因此按钮应该是可见的。使用相同的数据库文件只在某些设备上按钮不可见。
所有设备都在iOS 8.1.3上,它们是iPad mini Retina。
这是完整的功能:
- (void)configureCell:(MbsStartCell *)cell atIndexPath:(NSIndexPath *)indexPath
{
Objekt *object = [self.fetchedResultsController objectAtIndexPath:indexPath];
NSDate *rawDate = [object valueForKey:@"termin"];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd.MM.yyyy"];
NSString *strLabelUhrzeitbis;
if (nil != object.uhrzeitbis && ![object.uhrzeitbis isEqualToString:@""])
{
strLabelUhrzeitbis = object.uhrzeitbis;
cell.labelDatum.text = [NSString stringWithFormat:@"%@ zwischen %@ und %@", [dateFormatter stringFromDate:rawDate], object.uhrzeit, strLabelUhrzeitbis];
}
else
{
cell.labelDatum.text = [NSString stringWithFormat:@"%@ um %@", [dateFormatter stringFromDate:rawDate], object.uhrzeit];
}
NSSet *adressen = object.adressen;
NSArray *adressenArray = [adressen allObjects];
for (Adresse *adresse in adressenArray)
{
if ([adresse.typ isEqualToString:@"Baustelle"])
{
if (adresse.anschrift1 && ![adresse.anschrift1 isEqualToString:@""])
{
cell.labelAnschrift.text = [NSString stringWithFormat:@"%@", adresse.anschrift2];
} else {
cell.labelAnschrift.text = adresse.anschrift2;
}
cell.labelStrassePlzOrt.text = [NSString stringWithFormat:@"%@, %@ %@", adresse.strasse, adresse.plz, adresse.ort];
}
}
cell.labelObjektnummer.text = [[object valueForKey:@"objektnr"] description];
cell.labelFilale.text = [NSString stringWithFormat:@"Filiale: %@, %@", object.filialname, object.objektanleger];
cell.labelAnrufer.text = [NSString stringWithFormat:@"Anrufer: %@", object.anrufer];
NSDate *rawSchadenstag = [object valueForKey:@"schadentag"];
NSDateFormatter *dateFormatterSchadenstag = [[NSDateFormatter alloc] init];
[dateFormatterSchadenstag setDateFormat:@"dd.MM.yyyy"];
cell.labelSchadentag.text = [NSString stringWithFormat:@"Schadenstag: %@", [dateFormatterSchadenstag stringFromDate:rawSchadenstag]];
cell.labelSchadensursache.text = [NSString stringWithFormat:@"Schadensursache: %@", object.schadensursache];
cell.labelSchadensursache.lineBreakMode = NSLineBreakByWordWrapping;
cell.labelSchadensursache.numberOfLines = 2;
NSString *strWeitererHinweis;
if (nil != object.weitererhinweis)
{
strWeitererHinweis = object.weitererhinweis;
}
else
{
strWeitererHinweis = @"Es sind keine weiteren Hinweise vorhanden";
}
cell.labelWeitererHinweis.text = [NSString stringWithFormat:@"Weiterer Hinweis: %@", strWeitererHinweis];
cell.labelWeitererHinweis.numberOfLines = 3;
cell.labelWeitererHinweis.lineBreakMode = NSLineBreakByWordWrapping;
int intTerminart = [object.terminart intValue];
switch (intTerminart) {
case 1: {
cell.backgroundColor = [UIColor whiteColor];
[cell.buttonUpload setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
break;
}
case 2: {
cell.backgroundColor = [UIColor blueColor];
[cell.buttonUpload setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
break;
}
case 4: {
cell.backgroundColor = [UIColor redColor];
[cell.buttonUpload setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
break;
}
case 5: {
cell.backgroundColor = [UIColor yellowColor];
[cell.buttonUpload setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
break;
}
case 6: {
cell.backgroundColor = [UIColor greenColor];
[cell.buttonUpload setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
break;
}
default:
break;
}
cell.selectionStyle = UITableViewCellSelectionStyleGray;
BOOL checked = [self checkObjekt:object];
if (checked == YES ) {
[cell.buttonUpload setHidden:NO];
[cell.buttonUpload setTitle:@"Geprüft, Upload!" forState:UIControlStateNormal];
[cell.buttonUpload setEnabled:YES];
} else {
[cell.buttonUpload setHidden:NO];
[cell.buttonUpload setTitle:@"Ungeprüft" forState:UIControlStateNormal];
[cell.buttonUpload setEnabled:YES];
}
}
这是checkObjekt功能:
- (BOOL)checkObjekt:(Objekt *)objekt {
if ([[objekt.wohneinheiten allObjects] count] == 0) {
return NO;
}
//Das Schadensformular für jede Wohneinheit wird in einer Schleife durchgearbeitet
for (Wohneinheit *wohneinheit in [objekt.wohneinheiten allObjects])
{
MbsAppDelegate *delegate = (MbsAppDelegate *)[[UIApplication sharedApplication] delegate];
NSEntityDescription *entityDescription = nil;
//Auswahl der richtigen Tabelle anhand der Terminart
if ([objekt.terminart integerValue] == 1)
{
entityDescription = [NSEntityDescription entityForName:@"Schaden" inManagedObjectContext:delegate.managedObjectContext];
}
else if ([objekt.terminart integerValue] == 2)
{
entityDescription = [NSEntityDescription entityForName:@"Leckortung" inManagedObjectContext:delegate.managedObjectContext];
}
else if ([objekt.terminart integerValue] == 4)
{
entityDescription = [NSEntityDescription entityForName:@"Aufbau" inManagedObjectContext:delegate.managedObjectContext];
}
else if ([objekt.terminart integerValue] == 5)
{
entityDescription = [NSEntityDescription entityForName:@"Zwischenmessung" inManagedObjectContext:delegate.managedObjectContext];
}
else if ([objekt.terminart integerValue] == 6)
{
entityDescription = [NSEntityDescription entityForName:@"Abbau" inManagedObjectContext:delegate.managedObjectContext];
}
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entityDescription];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"wohneinheit == %@", wohneinheit];
[request setPredicate:predicate];
NSError *error;
NSArray *items = [delegate.managedObjectContext executeFetchRequest:request error:&error];
if (items == nil || [items count] != 1)
{
//Wenn kein Schadens- oder Leckortungsformular vorhanden ist, dann wird NO zurückgegeben
return NO;
}
else
{
//Durchlaufen der einzelnen Checked Spalten.
for (id item in items) {
int tempChecked = 0;
NSArray *checkedColumns = nil;
if ([objekt.terminart integerValue] == 1)
{
checkedColumns = self.checkedColumnsTerminart1;
}
else if ([objekt.terminart integerValue] == 2)
{
checkedColumns = self.checkedColumnsTerminart2;
}
else if ([objekt.terminart integerValue] == 4)
{
checkedColumns = self.checkedColumnsTerminart4;
}
else if ([objekt.terminart integerValue] == 5)
{
checkedColumns = self.checkedColumnsTerminart5;
}
else if ([objekt.terminart integerValue] == 6)
{
checkedColumns = self.checkedColumnsTerminart6;
}
for (NSString *checkedColumn in checkedColumns)
{
NSManagedObject *managedObject = (NSManagedObject *)item;
NSDictionary * attributes = [[managedObject entity] attributesByName];
NSArray *allKeys = [attributes allKeys];
if ([allKeys containsObject:checkedColumn]) {
NSNumber *checkedColumnValue = (NSNumber *)[item valueForKey:checkedColumn];
if (checkedColumnValue != [NSNumber numberWithInt:1]) {
tempChecked = 0;
}
else
{
tempChecked = 1;
}
} else {
tempChecked = 1;
}
}
if(tempChecked == 0)
{
return NO;
}
else
{
return YES;
}
}
}
}
return YES;
}