2

So I'm new to iOS programming and I've run into a problem.

I created a new view controller, and clicked the checkmark to auto make a .xib file for it. In the xib file I put a label, that I want to fade in. So I tried linking it to my custom view controller, and keep crashing with 'this class is not key value coding-compliant for the key login1'. Login1 being the name of the UILabel I imported. Here's the header file for RootView:

@interface RootViewController : UIViewController {
    PlayerStatViewController *playerStatViewController;
    NSString *viewName;
}
@property (weak, nonatomic) IBOutlet UILabel *login1;
@property (nonatomic, retain) PlayerStatViewController *playerStatViewController;
@property (nonatomic, retain) NSString *viewName;

-(IBAction)switchPage:(id)sender:(NSString *)toSwitch;
-(void) animateButton;
@end

And the .m file: #import "RootViewController.h" #import "FileUtils.h"

@interface RootViewController ()

@end

@implementation RootViewController

@synthesize playerStatViewController;
@synthesize viewName;
@synthesize login1;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
    }
    self.viewName = @"Boot";
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSString* fpath = [NSString stringWithFormat:@"%@%@", getDefPath(), @"/config.txt"];
    self.login1.text = loadfile(@"serverName", fpath);
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

-(IBAction)switchPage:(id)sender :(NSString *)toSwitch {
    if([toSwitch isEqualToString:(@"PlayerStat")]) {
        if(self.playerStatViewController == nil) {
        PlayerStatViewController *playerStatView = [[PlayerStatViewController alloc]
                                                    initWithNibName:(@"PlayerStat") bundle:[NSBundle mainBundle]];
            self.playerStatViewController = playerStatView;
        }
    [self.navigationController pushViewController:self.playerStatViewController animated:YES];
    }else if([toSwitch isEqualToString:(@"Boot")]) {
        [self.navigationController pushViewController:self animated:YES];
    }
}

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [self performSelector:@selector(animateButton) withObject:nil afterDelay:0.1f];
}

- (void)animateButton {
    self.login1.alpha = 0;

    [UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseIn
                     animations:^{ self.login1.alpha = 1;}
                      completion:nil];
}

@end

How I load the Xib (if it matters):

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        RootViewController *viewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
        [self.window setRootViewController:viewController];
        [window makeKeyAndVisible];
        return YES;
    }

Project being built for iPhone only. In the Xib, yes the custom view controller is set as the file owner. There is no mispointing values (exclamation points in inspection manager).

edit: crash log:

    2014-08-06 06:02:12.887 TrinityApi[5761:60b] *** Terminating app due to uncaught exception     'NSUnknownKeyException', reason: '[<UIApplication 0x8c781d0> setValue:forUndefinedKey:]: this     class is not key value coding-compliant for the key login1.'
*** First throw call stack:
(
    0   CoreFoundation                      0x017ee1e4 __exceptionPreprocess + 180
    1   libobjc.A.dylib                     0x0156d8e5 objc_exception_throw + 44
    2   CoreFoundation                      0x0187dfe1 -[NSException raise] + 17
    3   Foundation                          0x0122dd9e -[NSObject(NSKeyValueCoding) setValue:forUndefinedKey:] + 282
    4   Foundation                          0x0119a1d7 _NSSetUsingKeyValueSetter + 88
    5   Foundation                          0x01199731 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 267
    6   Foundation                          0x011fbb0a -[NSObject(NSKeyValueCoding) setValue:forKeyPath:] + 412
    7   UIKit                               0x004e41f4 -[UIRuntimeOutletConnection connect] + 106
    8   libobjc.A.dylib                     0x0157f7de -[NSObject performSelector:] + 62
    9   CoreFoundation                      0x017e976a -[NSArray makeObjectsPerformSelector:] + 314
    10  UIKit                               0x004e2d4d -[UINib instantiateWithOwner:options:] + 1417
    11  UIKit                               0x004e4ada -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 165
    12  UIKit                               0x0022d61b -[UIApplication _loadMainNibFileNamed:bundle:] + 58
    13  UIKit                               0x0022d949 -[UIApplication _loadMainInterfaceFile] + 245
    14  UIKit                               0x0022c54e -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 543
    15  UIKit                               0x00240f92 -[UIApplication handleEvent:withNewEvent:] + 3517
    16  UIKit                               0x00241555 -[UIApplication sendEvent:] + 85
    17  UIKit                               0x0022e250 _UIApplicationHandleEvent + 683
    18  GraphicsServices                    0x037e3f02 _PurpleEventCallback + 776
    19  GraphicsServices                    0x037e3a0d PurpleEventCallback + 46
    20  CoreFoundation                      0x01769ca5 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53
    21  CoreFoundation                      0x017699db __CFRunLoopDoSource1 + 523
    22  CoreFoundation                      0x0179468c __CFRunLoopRun + 2156
    23  CoreFoundation                      0x017939d3 CFRunLoopRunSpecific + 467
    24  CoreFoundation                      0x017937eb CFRunLoopRunInMode + 123
    25  UIKit                               0x0022bd9c -[UIApplication _run] + 840
    26  UIKit                               0x0022df9b UIApplicationMain + 1225
    27  TrinityApi                          0x00002a9d main + 141
    28  libdyld.dylib                       0x01e35701 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

EDIT: Just randomly started to work

4

1 回答 1

1

“class is not key value coding-compliant” 表示您首先为我们的标签分配了一个插座,并已将其连接到我们的 xib 中,但随后您删除了插座,而 xib 仍然包含对插座的引用,该引用不是不再存在,您需要从您的 xib 中删除此引用。

转到您的XIB文件并右键单击Files Owner,您可能会发现一个带有黄色标记的标签,只需删除其连接的插座,再次清理并运行您的程序

于 2014-08-06T10:43:53.467 回答