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