标签: nib

NSViewController和Nib的多个子视图

我很难用Interface Builder和NSViewController来加载视图.

我的目标是拥有一个符合以下描述的视图:顶部的顶部栏(如工具栏但不完全)跨越整个视图宽度,下面是第二个"内容视图".该复合视图由我的NSViewController子类拥有.

为此使用Interface Builder是有意义的.我创建了一个视图笔尖,并在其中添加了两个子视图,将它们正确放置(使用顶部栏和内容视图).我已经准备File's OwnerMyViewController,并连接插座等.

我希望加载的视图(条形图和内容)也在它们自己的笔尖中(这可能是让我沮丧的),并且这些笔尖将其自定义类设置为适用的相应NSView子类.我不确定要设置什么File's Owner(我猜MyController它应该是他们的主人).

唉,当我初始化一个MyViewController实际上没有我的笔尖的实例时.我已经正确地将它添加到我的Window的contentView(我已经检查过了),实际上,有些东西是加载的.也就是说,awakeFromNib会被发送到条形图,但它不会显示在窗口中.我想我肯定有一些电线穿过某处.也许有人可以帮助减轻我的一些挫败感?

编辑一些代码来显示我正在做的事情

当应用程序完成启动时,从应用程序委托中加载控制器:

MyController *controller = [[MyController alloc] initWithNibName:@"MyController" bundle:nil];
[window setContentView:[controller view]];
Run Code Online (Sandbox Code Playgroud)

然后在我的initWithNibName中,我现在不做任何事情,而是打电话给super.

cocoa interface-builder nib nsviewcontroller

25
推荐指数
1
解决办法
2万
查看次数

如何在Interface Builder中获取视图以在另一个笔尖中加载自定义视图?

我正在制作一个我想在多个笔尖中使用的自定义小部件.所以我创建一个新的视图nib Screen3,添加一些按钮,现在想要我的UIAwesomeSauce小部件.

如果我只是添加一个视图然后更改类标识,它就不会从UIAwesomeSauce笔尖获取子元素.如果我去图书馆并切换到Classes,也是一样的.似乎只有UIViewController具有"从笔尖加载"字段,这将是美丽的.

我知道我可以从代码中加载UIAwesomeSauce笔尖,获取顶级对象,然后手动放置它.但IB的观点是,您不必将代码置于代码中.如果我能让UIAwesomeSauce显示在图书馆列表中,那就更好了.

解决 - 由尼姆罗德 - 阅读解释和代码

无论如何,dood,那太好了.我现在可以制作自己的小部件类,用于愚蠢的真棒.让您的UI的FileOwner成为您的类,并在其中只有一个普通的UIView与您的所有东西.(小部件的nib中的单个视图不能是类本身,或者你在initWithCoder中得到递归.)然后在你要使用它的nib中,创建一个vanilla UIView并更改它的类.你将无法真正看到该广场内的小部件,而是处理.

Self现在是一个空白视图,而tMyActualSelf是您在另一个nib中完成工作的单个视图.好极了!

- (id)initWithCoder:(NSCoder*)coder 
{
    if ((self = [super initWithCoder:coder])) 
    {
        UIView *tMyActualSelf = nil;
        // Initialization code
        NSArray *tNibItems = [[NSBundle mainBundle] loadNibNamed:@"UIAwesomeSauce" owner:self options:nil];
        for (id object in tNibItems) 
        {
            if ([object isKindOfClass:[UIView class]])
                tMyActualSelf = (UIView *)[object retain];
        }   
        if( tMyActualSelf ) 
        {
            tMyActualSelf.frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
            [self addSubview:tMyActualSelf];
        }
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

iphone interface-builder nib custom-view

25
推荐指数
1
解决办法
6577
查看次数

XIB和NIB有什么区别?

可能重复:
.NIB - > .XIB有什么用?

我想知道xib和nib之间有什么区别,我知道像xib = xml接口构建器和nib是下一个接口构建器,但我不清楚两者之间的区别,请帮助我.

提前致谢.

interface-builder xib nib ios

25
推荐指数
1
解决办法
1万
查看次数

UITextView上的好奇警告消息

有没有人遇到过针对iPhone的警告信息?更重要的是你了解如何解决它?

"不支持的配置数据检测和可编辑"

它似乎是抱怨的UITextView.这是一个截图. 在此输入图像描述

warnings uitextview nib ios

22
推荐指数
1
解决办法
5405
查看次数

在注销时重置故事板

我正在构建一个使用故事板的IOS 5.1 Web客户端应用程序.我的一个动作是"注销",在此期间我想将我的根视图重置为由故事板的根视图创建的初始视图.(当您登录时,根据您的身份删除或添加一些视图项;当您注销时,我想将它们重置为默认值,我在故事板中指定了这些值.)

我意识到我可以通过编程方式重置/重新添加所有元素,但故事板有什么用?我认为必须通过重新加载视图文件来回到正方形,对吧?

xib uiviewcontroller nib ios

20
推荐指数
1
解决办法
7377
查看次数

在StoryBoard的ViewController中使用UIView加载Nib

我有一个UIView,我想在几个视图控制器中使用,所以我创建了视图(.h/.m)和一个nib文件.在Storyboard视图中添加为视图控制器的子视图,但未加载nib中定义的布局.

是否可以为故事板中的视图控制器中使用的UIView加载nib?

iso uiviewcontroller uiview nib uistoryboard

20
推荐指数
2
解决办法
1万
查看次数

NSInternalInconsistencyException无法在bundle中加载nib

我已经创建了一个儿童游戏应用程序.

每轮加载12个不同的问题.在第4轮之后,应用程序崩溃并显示以下日志:

ImageIO: CGImageRead_mapData 'open' failed '/var/mobile/Applications/4B0202F9-5961-4AC7-A327-604620AF1F94/test.app/pi_ok.png'
         error = 24 (Too many open files)


2011-03-24 02:26:34.743 [424:707] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </var/mobile/Applications/4B0202F9-5961-4AC7-A327-604620AF1F94/VisualMath.app> (loaded)' with name 'ThemePickerController''
*** Call stack at first throw:
(
    0   CoreFoundation                      0x3182464f __exceptionPreprocess + 114
    1   libobjc.A.dylib                     0x3651dc5d objc_exception_throw + 24
    2   CoreFoundation                      0x31824491 +[NSException raise:format:arguments:] + 68
    3   CoreFoundation                      0x318244cb +[NSException raise:format:] + 34
    4   UIKit                               0x330d2a53 -[UINib instantiateWithOwner:options:] + 1110
    5   UIKit …
Run Code Online (Sandbox Code Playgroud)

iphone crash cocoa-touch nib ipad

19
推荐指数
2
解决办法
3万
查看次数

加载笔尖但视图插座未设置 - Swift版

我有一个项目都在Objective C中,除了我的视图控制器,它在Swift中.

当我运行它时,我得到错误

由于未捕获的异常'NSInternalInconsistencyException'终止应用程序,原因:' - [UIViewController _loadViewFromNibNamed:bundle:]加载了"..."笔尖,但未设置视图插座.

所以我打开了我的nib文件,查看"文件所有者",我发现视图根本不显示为插座.
对于我的旧视图控制器(目标c),视图插座会显示.

在我的Swift视图控制器中,我尝试从UIViewController覆盖"view"变量以强制它为@IBOutlet,但它抱怨UIView类型的"view"变量,抱怨UIView ?,并抱怨UIView !

这是简化版本

我的AppDelegate.h

#import <UIKit/UIKit.h>

@class MyViewController;
@class MyViewControllerSwift;

@interface MSAppDelegate : UIResponder <UIApplicationDelegate>
{
}

@property (strong, nonatomic) UIWindow *window;

@property (strong, nonatomic) UIViewController *viewController;

@end
Run Code Online (Sandbox Code Playgroud)

AppDelegate.m

#import "MyAppDelegate.h"

#import "MyViewController.h"
#import "MySwift-Swift.h"
#import <UIKit/UIKit.h>

@implementation MyAppDelegate

static BOOL USE_SWIFT_VIEW_CONTROLLER = YES;

- (void)dealloc
{
    [_window release];
    [_viewController release];
    [super dealloc];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override …
Run Code Online (Sandbox Code Playgroud)

objective-c xib nib ios swift

19
推荐指数
2
解决办法
2万
查看次数

如何从NIB加载UIView?

我一直在使用UIViewControllers并initWithNibName取得了很大的成功,基本上使用它们作为使用Interface Builder设计视图的便捷方式.不幸的是,我在UIViewController文档中注意到这一行之前构建了一个视图层次结构:

注意:您不应使用视图控制器来管理仅填充其窗口一部分的视图

我的问题是:拥有一个非常简单的NIB,UIView除了默认的First Responder和Owning Object之外,还有一个最简单的加载UIView到我的代码中的方法是什么?

我此时无法loadNibNamed:owner:options:上班,但怀疑答案会以某种方式涉及到它.

iphone objective-c uiview nib

18
推荐指数
1
解决办法
2万
查看次数

initWithNibName VS NSBundle的loadNibNamed

我注意到有两种不同的加载nib/xib文件的方法:

  1. 通过UIView的initWithNibName:bundle:方法
  2. NSBundle的loadNibNamed:owner:options:方法.

有人可以解释这两者之间的差异,以及何时使用一个而不是另一个以及在什么情况下更合适?

例如,如果我从tableView:viewForHeaderInSection:方法中的nib文件加载自定义表节标题视图,我将使用哪一个?

或者,如果我从nib文件加载自定义表视图单元格,我会使用哪一个?

iphone cocoa-touch objective-c uitableview nib

17
推荐指数
2
解决办法
3905
查看次数