- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
这是这个问题 (custom UIView how-to with IB / Xcode 4.5.1 and iOS Simulator 6.0) 的后续问题,但没有必要阅读 - 这是我第一次尝试创建自定义 UIView 并且显然有些事情我没有提前获得任何帮助您可以提供。
我有一个派生自 Interface Builder 的自定义 UIView。我想将尺寸设置为 200w x 200h,将背景颜色设置为绿色。创建时,我执行了以下操作:
在我的 Tview.m 中,我设置了以下内容(我根据其他 SO 问题进行了一些更新,但不清楚这些是否仍然是最新的或准确的):
@implementation Tview
-(id) initWithCoder:(NSCoder *)aDecoder
{
NSLog(@"in initWithCoder");
if((self = [super initWithCoder:aDecoder])) {
[self setUpView];
}
return self;
}
-(void)awakeFromNib
{
NSLog(@"in awakeFromNib");
[self setUpView];
}
-(void)setUpView
{
NSLog(@"I am in setUpView");
NSArray *subviewArray=[[NSBundle mainBundle] loadNibNamed:@"tnib" owner:self options:nil];
UIView *mainView = [subviewArray objectAtIndex:0];
[self addSubview:mainView];
}
@end
在我的 ViewController.xib 中,我拖出一个 UIView 并将自定义类名称设置为 Tview。我 #import Tview.h 文件并从 ViewController.xib 拖到 Tview.h 并创建以下属性:
@property (strong, nonatomic) IBOutlet Tview *myTview;
我构建并运行并获得以下无限循环:
2013-03-04 06:49:05.452 Nibtest2[44524:11303] in initWithCoder
2013-03-04 06:49:05.455 Nibtest2[44524:11303] I am in setUpView
2013-03-04 06:49:05.456 Nibtest2[44524:11303] in initWithCoder
2013-03-04 06:49:05.458 Nibtest2[44524:11303] I am in setUpView
2013-03-04 06:49:05.459 Nibtest2[44524:11303] in initWithCoder
2013-03-04 06:49:05.460 Nibtest2[44524:11303] I am in setUpView
直到它最终崩溃。
我在这里做错了什么?
提前谢谢
最佳答案
您的代码设置了一个无限递归:initWithCoder:
调用 setUpView
,它从一个包中实例化一个新的 UIView
,从而调用 initWithCoder:
间接完成循环。
您不应在读取同一 Nib 时调用的代码中访问 Nib 。您应该在包含对象的代码中读取 NIB,而不是在 Tview
对象本身的代码中。否则,您将陷入无限循环。
您需要完全远程控制 setUpView
,以及来自 awakeFromNib
和 initWithCoder:
的调用。您通过从对象检查器中拖出而在界面构建器中建立的连接似乎已经导致 NIB 文件正确加载,正如 initWithCoder:
的调用所证明的那样。您可能需要的唯一一行是:
[self addSubview:mainView];
但是,它不应该在 Tview
的代码中:它需要移动到具有 myTview
属性的父 Controller 中,它应该是修改为
[self.view addSubview:_myTview];
将此行添加到 viewDidLoad
。它应该可以解决这个问题。
关于ios - 无限循环试图从 IB 中的 xib 创建自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15204547/
对于我的无能,我很抱歉,但总的来说,我对 Cocoa、Swift 和面向对象编程还很陌生。我的主要来源是《Cocoa Programming for OS X》(第 5 版),以及 Apple 的充满
当创建自定义 UIView 时(就方法而言)我应该添加 subview 和其他初始化步骤,以便它在以下情况下显示: 通过在 Interface Builder 中添加来创建 通过初始化创建并以编程方式
我是Python新手,我使用的是Windows 7,并且已经下载并安装了TWS API (9.76.01)(我的TWS运行的是972.1),并按照指示成功安装了ibapi python: 1) pyt
Xcode IB 再次通过不必要的警告让开发人员感到沮丧:我似乎无法从我的 Xcode 项目中删除此警告。 双击警告时,它会显示我的 MainMenu.xib 文件,但没有给出导致问题的原因。有什么想
Interface Builder 对我的 .xib 文件的设置发出警告。 它说,在一个名为“MainMenu.xib Info”的对话框中, Object: Window ID: 21 Type:
是否可以将 IB(Interactive Brokers)网关作为 Windows 服务运行?我想运行 7/24 解决方案,而无需登录操作系统。 最佳答案 IB 网关将/应该每周重新启动 1 次,TW
我知道这是一个非常愚蠢的问题,但过去我在 Interface Builder 中将“圆形样式”UITextField 更改为“无边框样式”文本字段,以便轻松更改框的高度。现在,当我开始做这件事时,我一
我很好奇,IB View 模式到底是用来做什么的? 我改了很多次都没有效果?有人可以解释一下吗。 最佳答案 它改变了用图像填充 View 的方式。 尝试设置图像并更改值以查看差异。 关于iOS - I
我是 IB API 的新手,我想获取特定交易所类型的符号列表。所以基本上我会通过交换/类型并接收符号列表。 我找不到相关的方法。 请指教。 最佳答案 无法从交易平台 API 下载特定交易所的符号列表。
在 Interface Builder 中,我有一堆垂直放置的文本字段。我希望它们均匀地分布在垂直空间中,并且所有尺寸都相同。 我找到了可以让您排列项目的对齐菜单。我找不到分发或调整大小的菜单。 Xc
这是希望它是一个简单的设置。 我无法在 IB 中输入带小数的约束值。每当我输入一个带小数的值并按回车键时,系统都会对其进行四舍五入! 在代码中创建约束时我没有这个问题。只有在IB。 有办法吗? 最佳答
我已经设置了我的pickerview并且一切正常,但是现在我有一个大的pickerview在Interface Builder中占用了很多空间。在 Interface Builder 中工作时不得不移
假设我想使用名为 X 的相同 UIImage 创建许多自定义按钮。通过编程方式,我只会创建一个 UIImage 并将其添加到我创建的所有按钮中。我想知道如果我在 Interface Builder 中
我在 IB 中设置了一个按钮。我设置了 IBOutlet 并链接到它的屏幕对象。有没有办法以编程方式更改按钮位置和/或大小?我知道您可以更改标题和某些内容,但我不知道如何更改其位置或大小。 谢谢。 最
我知道,这听起来很愚蠢,但是改变 IB 中的状态栏颜色并不会改变任何东西。它始终保持灰色。我可以将代码更改为黑色(有效),但在第一次启动时我仍然有这个灰色条。XCode 是 4.2 beta,现在无法
这里是 cocoa 新手...... 我知道这听起来很愚蠢,但我在 Interface Builder 中找不到绑定(bind) Pane 。我有最新的 xCode( 3.2.3 ),但也尝试过其他版
我见过这个问题的 iPhone 等效项 here我想知道...OS X 开发是否有与 bringSubviewToFront: 等效的方法?我需要一些东西来将 NSImageView 发送到“前面”。
我想知道是否有人知道为什么 IB 在奇怪的 Nib 上到处都有莫名其妙的高亮区域.. 下面是一个例子: 我的意思是我用红色标记的区域内的亮区... 分割 View 下方没有 View ,没有与之对应的
在 Interface Builder ,你有约束告诉应用程序如何在设备旋转时重新绘制屏幕。 有没有办法以编程方式设置这些? 最佳答案 您需要设置autoresizingMask观点。 它指定 Vie
我在 Interface Builder 中定义了一个 View ,其自动布局约束可以在 IB 中定义,除了一个。这是我在 viewDidLoad 中通过代码添加的. 除了 IB 显示模棱两可的布局警
我是一名优秀的程序员,十分优秀!