我是iOS編程新手,遇到了一個問題。連接在一起:AppDelegate,ViewController和XIB
做了什麼:
我已經創建了iOS應用程序。 最初它有main.m,AppDelegate.h,AppDelegate.m和一些通常創建的其他支持文件(不包括代碼)。
然後我手動創建帶界面的XIB文件(LoginView.xib)並手動添加LoginViewController.h和LoginViewController.m來控制XIB。
將網點添加到LoginViewController.h。
所有我設置文件的所有者類(LoginViewController)和廈門國際銀行和LoginViewController.h之間進行連接後。
問題描述:
我需要立即在應用程序的開始就展現實例化登錄視圖控制器和顯示登錄視圖。
我嘗試了幾次嘗試並閱讀了一打論壇帖子,但沒辦法。除白色窗口背景外沒有任何顯示。 我該怎麼做纔對?
參考代碼:
LoginViewController.h
#import <UIKit/UIKit.h>
@interface LoginViewController : UIViewController
{
IBOutlet UIView *_loginView;
IBOutlet UITextField *_tfLogin;
IBOutlet UITextField *_tfPassword;
IBOutlet UIButton *_btnLoginToSystem;
}
- (IBAction)attemptLogin:(id)sender;
@end
LoginViewController.m
#import "LoginViewController.h"
@interface LoginViewController()
@end
@implementation LoginViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)attemptLogin:(id)sender
{
}
@end
AppDelegate.h
#import <UIKit/UIKit.h>
#import "LoginViewController.h"
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) LoginViewController *loginViewController;
@end
AppDelegate.m
#import "AppDelegate.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
self.loginViewController = [[LoginViewController alloc] initWithNibName:@"LoginView" bundle:nil];
[self.window.rootViewController presentModalViewController:self.loginViewController animated:NO];
[self.window makeKeyAndVisible];
return YES;
}
更新! 夥計們,謝謝你們,我發現了另一個問題。一旦我得到你的批准,我的代碼(在適當的版本,當然)是正確的,我開始模擬器和看到我的應用程序崩潰,但下列情況除外:
NSInternalInconsistencyException with the reason [UIViewController _loadViewFromNibNamed:bundle:] loaded the ... nib but the view outlet was not set.
感謝StackOverflow的我固定它。 Loaded nib but the view outlet was not set - new to InterfaceBuilder
報價從主題喬希司法評論我提供的鏈接:
- 打開XIB文件左邊欄(頂部一個,長相上文件的所有者圖標造成的問題
- 點擊就像一個黃色輪廓框)
- 如果你沒有看到右側欄中,單擊上方的工具欄中的「查看」第三個圖標。這將顯示右側側邊欄
- 在右側邊欄中,單擊第三個標籤 - 看起來有點像報紙的標籤
- 在頂部的「Custom Class」下,確保Class是應與此視圖相對應的ViewController的名稱。如果沒有,請輸入它
- 在右側邊欄中,單擊最後一個選項卡 - 看起來像一個帶箭頭的圓形的選項卡
- 您應該在其下看到帶有「view」的「outlets」。在拖動圓圈旁邊的「查看」圖標左邊欄上(下一個,看起來像一個白色方形厚厚的灰色輪廓
- 保存XIB並重新運行
可能這些信息彙總到一個點將幫助其他新人通過我傳遞更快的方式。
夥計們,我的登錄視圖在啓動後完美顯示,我遇到了另一個問題:textfields不可編輯:(我點擊textfield,將光標放在裏面但不能輸入字符(即使鍵盤沒有顯示)也不能改變焦點textfield。你有什麼建議嗎?謝謝! – DaddyM 2013-03-14 05:32:02
還有一個問題:我真的需要這個IBOutlet:IBOutlet UIView * _loginView; ????? – DaddyM 2013-03-14 05:43:23