在 MainWindow.xib 中加载视图 .xib
Posted
技术标签:
【中文标题】在 MainWindow.xib 中加载视图 .xib【英文标题】:Load a view .xib in MainWindow.xib 【发布时间】:2011-06-14 21:37:59 【问题描述】:这可能是一个非常愚蠢的错误,但我已经花了 4 多天的时间寻找解决方案。
这很简单,我有我的 MainView.xib 和一个名为 FirstViewController (h/m/xib) 的视图。
在 MainWindow.xib 中,我添加了一个 UIViewController 并将类名更改为 FirstViewController 并设置了 Nib 名称(尽管我尝试了两种方式)。
我想这与插座有关,但我不能说清楚,因为我是一个为 ios 开发的新手,任何帮助都会有很大帮助。
我使用 XCode 3.2 和界面生成器,以及 SDK 4.3
AppDelegate
#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
@interface iPadTerritorioV2AppDelegate : NSObject <UIApplicationDelegate>
IBOutlet UIWindow *window;
IBOutlet UIViewController *navigationController;
NSString *devToken;
NSString *matricula;
NSString *campus;
NSMutableArray *materiasAlumno; //para CCM
NSMutableArray *busqDir; //para CCM
NSInteger agendaBadgeNumber;
NSInteger intramurosBadgeNumber;
NSInteger notificacionesBadgeNumber;
NSInteger mapaBadgeNumber;
NSMutableData *receivedData;
NSMutableDictionary *listData;
BOOL yaSeHizoElPrimerFetchBadges;
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UIViewController *navigationController;
@property (nonatomic, retain) NSString *devToken;
@property (nonatomic, retain) NSString *matricula;
@property (nonatomic, retain) NSString *campus;
@property (nonatomic, retain) NSMutableArray *materiasAlumno;
@property (nonatomic, retain) NSMutableArray *busqDir;
@property NSInteger agendaBadgeNumber;
@property NSInteger intramurosBadgeNumber;
@property NSInteger notificacionesBadgeNumber;
@property NSInteger mapaBadgeNumber;
@property (nonatomic, retain) NSMutableData *receivedData;
@property (nonatomic, retain) NSMutableDictionary *listData;
@property BOOL yaSeHizoElPrimerFetchBadges;
- (void)fetchBadges;
@end
FirstViewController.h
#import <UIKit/UIKit.h>
#import "Constants.h"
#import "StringDecoding.h"
#define kConnectionBadgeNotifications 0
#define kConnectionLogin 1
#define kConnectionDevToken 2
#define kCCMindex 0
#define kCSFindex 1
#define kMTYindex 2
@interface FirstViewController : UIViewController
IBOutlet UISegmentedControl *segmentedCampus;
IBOutlet UITextField *usernameField;
IBOutlet UITextField *passwordField;
IBOutlet UISwitch *remembermeSwitch;
IBOutlet UIButton *loginButton;
UIActivityIndicatorView *loginIndicator;
NSMutableDictionary *listData;
NSMutableData *receivedData;
NSInteger connectionID;
@property (nonatomic, retain) UISegmentedControl *segmentedCampus;
@property (nonatomic, retain) UITextField *usernameField;
@property (nonatomic, retain) UITextField *passwordField;
@property (nonatomic, retain) UIActivityIndicatorView *loginIndicator;
@property (nonatomic, retain) UISwitch *remembermeSwitch;
@property (nonatomic, retain) UIButton *loginButton;
@property (nonatomic, retain) NSMutableDictionary *listData;
@property (nonatomic, retain) NSMutableData *receivedData;
@property NSInteger connectionID;
- (IBAction)handleNextClick:(id) sender;
- (IBAction)backgroundClick;
- (IBAction)login: (id) sender;
@end
【问题讨论】:
按惯例调用视图“xxxxxxController”是不好的。 这是一个视图,而不是一个控制器! ;) 您是否尝试过在 Xcode 中从头开始创建基于视图的项目并查看其设置? @WTP 因为我基本上将 iPhone 应用程序移植到 iPad,为了保持一致性,我坚持使用源文件的名称 @Dancreek 这可能行得通,让我检查一下 xD @WTP Apple 有这个命名约定的原因是视图归视图控制器所有。是的,它是一个视图,但它属于视图控制器。因此它是视图控制器 .xib 文件。 【参考方案1】:听起来您的 FirstViewController 没有被保留 - 如果它没有分配到任何地方的插座,则没有任何东西保留它,它就会消失。在某处添加一个属性(也许是您的 AppDelegate,如果这就是您所拥有的)并将其连接到控制器:
@property (nonatomic, retain) IBOutlet UIViewController *firstViewController;
【讨论】:
它现在崩溃了 xD,让我添加我在 AppDelegate 和 FirstViewController 上的内容 如果不清楚,您还需要在某处 @synthesize 该属性。 啊,在这种情况下,我们需要知道崩溃的错误信息是什么。 控制台中没有错误代码,它只是尝试运行并返回 iPad 启动屏幕。然后我在 IBOutlet 中将 IUViewController 更改为 FirstViewController,然后我得到一个黑屏,仅此而已以上是关于在 MainWindow.xib 中加载视图 .xib的主要内容,如果未能解决你的问题,请参考以下文章