- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试在用户按下按钮时使用 loadnibnamed 加载名为“AddProgramView”的 xib 文件。我在 Storyboard中创建了 xib,在 xib View 中放置了各种 subview ,并将 socket 连接到名为 AddProgramView 的相应 swift 文件。当我加载 xib 时,没有出现任何 subview 。他们都失踪了。帮助?这是我的代码
在我的主视图 Controller 中:
@IBAction func addProgram(sender: UIButton) {
if let _ = addProgramView {
addProgramView!.frame = CGRectMake(0, self.window!.frame.origin.y + self.window!.frame.height, self.window!.frame.width, CGFloat(325))
}
else {
let addProgramViews = NSBundle.mainBundle().loadNibNamed("AddProgramView", owner: self, options: nil)
addProgramView = addProgramViews.first as? AddProgramView
addProgramView!.frame = CGRectMake(0, self.window!.frame.origin.y + self.window!.frame.height, self.window!.frame.width, CGFloat(325))
window?.addSubview(addProgramView!)
}
window?.bringSubviewToFront(addProgramView!)
UIView.animateWithDuration(0.3, delay: 0.0, options: UIViewAnimationOptions.CurveEaseOut, animations: {
self.addProgramView!.frame.origin.y -= CGFloat(325)
}, completion: nil)
}
AddProgramView.swift 文件:
class AddProgramView: UIView {
@IBOutlet weak var nameField: UITextField!
@IBOutlet weak var cancelButton: UIButton!
@IBOutlet weak var instructionsLabel: UILabel!
}
最佳答案
首先检查,如果您在 View 本身而不是文件所有者中声明了您的类名。
如果没有,那就去做吧。然后再试一次。
另一种选择是在您的 AddProgramView.swift
中创建 IBOutlet@IBOutlet var contentView: UIView!
并从 View 中删除类名并将其添加到文件所有者。
通过右键单击文件所有者连接 contentView:
然后像这样创建初始化方法:
class AddProgramView: UIView {
@IBOutlet var contentView: UIView!
override init(frame: CGRect) {
super.init(frame: frame)
commonInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit()
}
func commonInit() {
NSBundle.mainBundle().loadNibNamed("AddProgramView", owner: self, options: nil)
self.addSubview(self.contentView)
self.contentView.frame = self.bounds
}
}
现在您可以随时随地使用 AddProgramView。通过 init(frame:)
let addProgramView = AddProgramView.init(frame: CGRectMake(0, 0, 320, 30))
或者您可以通过添加 UIView 并将它们的类设置为 AddProgramView 直接在 Storyboard中使用它们(没有额外的代码行, Storyboard将为您调用 init(coder:))
我已经为您创建了示例项目 - CustomView project
关于swift - loadnibnamed 不加载 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32729307/
我知道这很直截了当,但经过太多的牵扯,我离解决方案还差得很远。 我看过解释如何使用 XIB 和所有内容创建 View 的教程。但他们都没有解决我在这里遇到的情况。 我有一个 XIB 文件,它是一个自定
我即将完成我的第一个 iPhone 应用程序,并想通过 Leaks Performance Tool 运行它。修复了一个明显的问题后,我剩下的唯一一个是一个 Nib 充当通过 loadNibNamed
由于某种原因,使用 loadNibNamed: 导致内存泄漏。 假设我有接口(interface): @interface Step : UIViewController { IBOutlet U
我正在使用 loadView 以编程方式设置 UIViewController 子类,并且想知道我是否做对了。当我在 Interface Builder 中查看“Interface.xib”时,其 V
我正在尝试使用 iPhone SDK 更改使用 Nib 创建的对象的类。 原因是;直到运行时我才知道我想要的 nib 对象是什么类(尽管它们将具有相同的基于 UIView 的父类(super clas
我实现了一个 loadNibNamed: 方法来唤醒一些窗口。 打开的窗口不是事件的。我怎样才能使这个窗口成为当前窗口,什么时候加载? 最佳答案 [窗口 makeKeyAndOrderFront: n
这是场景:一个简单的应用程序,有两个 View Controller 类和一个带有 1 个 View Controller 的 Storyboard。 ViewController 'Super' 继
我有类层次结构 ParentCell extends UITableViewCell ChildCell extends ParentCell ParentCell 有单独的 XIB,在子单元中,我仅
当我们使用loadNibNamed方法获取nib文件时,为什么会返回一个数组,不就是一个nib文件名对应一个nib文件吗?我尝试打印这个数组的计数,我发现它总是返回1。希望你能帮我解释一下,非常感谢!
我正在尝试在用户按下按钮时使用 loadnibnamed 加载名为“AddProgramView”的 xib 文件。我在 Storyboard中创建了 xib,在 xib View 中放置了各种 su
Apple Doc 说 nib 文件中最重要的对象之一是 File's Owner 对象 ,但它似乎是 nib 文件中的文件所有者,而不是 LoadNibName< 设置的对象 方法。我想知道它们之间
我熟悉为我自己的 UIView 子类创建 XIB 的大部分过程,但并非一切都对我正常工作——这主要与 IBOutlets 链接有关。我可以让他们以一种看似迂回的方式工作。 我的设置是这样的: 我有 M
我使用以下代码从 View Controller 中正确加载 Nib (XIB): self.myView.view = (MyView *)[[[NSBundle mainBundle] loadN
我有一个基于文档的 Cocoa 应用程序。在运行时,我通过调用 [NSBundle loadNibNamed:@"inspectorNIB"owner:self] 从包中加载额外的 Nib (其中 s
我正在尝试使用自定义 nib 文件来完成 UITableViewCell 的子类。 子类的名称是 MyCustomCell。 .xib 文件只有一个带有单个 UILabel“cellTitle”的 U
我创建了一个与 .xib 文件关联的 UIView 子类。此 UIView 子类将在 UIViewController 中使用。在 Controller 中,我认为我们如何实例化 UIView 子类有
我有一个带有 CustomClass = "BaseClass"的 view.xib 文件(我在 XCode 编辑器上配置它),所以我可以这样做: BaseClass *mBassClass= [[[
我正在使用自定义单元格并调用 loadNibNamed:。这似乎会导致内存泄漏,我不确定如何解决。如果之后我将顶级对象设置为 nil,我仍然会遇到泄漏。 topLevelObjects = [[NSB
我有一个 View Controller ,其中包含许多自定义 UIView。我尝试使用 InterfaceBuilder (IB) 定义自定义 UIView,并使用以下代码在 initWithFra
我有一个 ScrollView ,其中包含大约 40-50 个不同类型的对象。对象的类型根据对象的位置定义(例如,如果是 ScrollView 中的第 5 个对象 -> 是 Object1,如果它是
我是一名优秀的程序员,十分优秀!