按钮在某些设备上可见,在某些设备上不可见

时间:2015-02-11 15:27:51

标签: ios objective-c xcode

当检查为真且不可见时,当检查为假时,表格单元格中的按钮可见。

以下是该功能的一部分:

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;
}

0 个答案:

没有答案