在 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的主要内容,如果未能解决你的问题,请参考以下文章

MainWindow.xib nib 文件有啥用?

MainWindow.xib 只是黑屏

Objective-C - 如何处理 MainWindow.xib?

我真的需要 MainWindow.xib 文件吗?

在导航视图控制器中加载特定视图

如何在表格视图单元格中加载内容视图?