标签: nib

iPad应用程序仅在不在模拟器中的设备上加载nib时崩溃

我知道之前已经问过这个问题,我花了很多时间跟踪各个主题的建议,不仅仅是在这个网站上,而是无济于事.

我正在为iPad开发一个包含多个视图的应用程序.这些视图中的每一个都包含一个UITableView.一些TableView单元格包含使用UITableViewCell实现的自定义单元格.现在的问题是我可以在iPad模拟器上运行我的应用程序而不会在实际设备上运行.在设备上 - 一旦我尝试访问包含该问题的自定义UITableViewCell的视图,它就会崩溃并显示以下消息:

2011-08-03 20:37:13.849 myApp[658:707] Creating cell: LabledTextFieldCell.xib
2011-08-03 20:37:13.866 myApp[658:707] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </var/mobile/Applications/B9A24738-FA19-4A54-8CE5-813B48E6871E/iCockpit-Client.app> (loaded)' with name 'LabledTextFieldCell.xib''
Run Code Online (Sandbox Code Playgroud)

我检查并重新检查,一切似乎都完好无损.该文件存在 - 在Xcode中以及物理上在文件系统中,并且在代码中以正确的名称引用它.

这是崩溃发生的代码行:

[[NSBundle mainBundle] loadNibNamed:MyIdentifier owner:self options:nil];
Run Code Online (Sandbox Code Playgroud)

在更大的背景下:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

int curRow = indexPath.row;
int i = 0;

if (indexPath.section > 0) {

    while (i < indexPath.section) {

        curRow = curRow + [self sectionSize:i];
        i++;
    }

}   

UITableViewCell *cellRet;

if …
Run Code Online (Sandbox Code Playgroud)

xcode objective-c xib nib ipad

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

如何在xib的xml文件的NSRGB标签中编码十六进制颜色?

我的任务是动态创建xib文件及其所有参数,如背景颜色.我通过创建xml内容然后编写xib文件来创建xib文件.我只能编码其特定颜色,例如黑色NSRGB标签 -

<object class="NSColor" key="IBUITextColor" id="1026485712">
    <int key="NSColorSpace">1</int>
    <bytes key="NSRGB">MCAwIDAAA</bytes>
</object>
Run Code Online (Sandbox Code Playgroud)

红色 -

<object class="NSColor" key="IBUITextColor">
    <int key="NSColorSpace">2</int>
    <bytes key="NSRGB">MC45MzcyNTQ5NjUzIDAgMC4yMDM5MjE1ODYzAA</bytes>
</object>
Run Code Online (Sandbox Code Playgroud)

我不知道如何将其他十六进制颜色代码(#0000CD)转换为此编码颜色的NSRGB(MC45MzcyNTQ5NjUzIDAgMC4yMDM5MjE1ODYzAA).我无法知道为NSRGB颜色代码编码十六进制颜色的标准.

iphone xib nib ios

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

NSView,NSViewController和MainMenu.xib究竟是如何组合在一起的?

我要切入追逐:我的应用程序已经增长了很多,现在我觉得是时候做一些整理了.我想将我的一些视图从我的MainMenu.xib文件中分离到他们自己的Nib文件中.绊倒我的部分是整个"Interface Builder + My Code"的事情.这是我到目前为止所做的:

  1. 我添加了一个视图控制器代理对象:
    在Interface Builder对象浏览器中查看Controller对象

  2. Identity检查器中,我已将视图控制器的类名添加到Custom Class字段中.
    Interface Builder中的Identity Inspector

  3. 在" 属性"检查器中,我输入了要加载的笔尖的名称. Interface Builder中的Nib Name字段

  4. 我已将视图控制器对象的视图插座连接到MainMenu.xib中的现有视图.
    在Interface Builder中查看View Controller上的Outlet

  5. 最后,我点击Cmd + R,我的观点不存在.
    [在这里插入FFFFUUUUU meme的图像.]

我错过了什么?过去两周我一直盯着我的Mac日复一日,所以如果我完全遗漏了一些东西,我也不会感到惊讶.如果有人看到我的n00b方式,并愿意指出我正确的方向,我会非常感激.谢谢.

cocoa interface-builder nsview nib nsviewcontroller

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

在Xcode 5中将iPhone NIB转换为iPad NIB

我正在开发一款通用应用.

那就是:将iPhone xib转换为iPad xib? 还有:Xcode 4 .xib创建iPad版本.

我是唯一仍然无法将笔尖转换为iPad的人吗?我刷新了Xcode,在"尺寸"下仍然只看到Retina 3.5和Retina 4.我甚至使用了两个SO问题脚本作为答案并仍然保留在相同的iPhone笔尖...

请帮忙!

interface-builder nib ipad ios xcode5

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

iOS Swift UICollectionView registerNib 用于可重用视图不起作用

我正在尝试使用 UICollectionViewController 创建一个类似的 iCalendar。现在我正在尝试添加可重用视图作为每天的列标题。

我制作了一个故事板并添加了一个链接到此类的 UICollectionViewController:

import UIKit

class WeekViewController: UICollectionViewController, UICollectionViewDelegate
{
    let dataSource = WeekViewDataSource()
    let weekLayout = WeekViewLayout()

    override func awakeFromNib() {
        var columnHeaderViewNIB = UINib(nibName: "ColumnHeaderView", bundle: nil)
        self.collectionView?.registerNib(columnHeaderViewNIB, forSupplementaryViewOfKind: columnHeaderViewIdentifier, withReuseIdentifier: columnHeaderViewIdentifier)

        self.collectionView?.collectionViewLayout = weekLayout
        self.collectionView?.dataSource = dataSource

        super.awakeFromNib()
    }
}
Run Code Online (Sandbox Code Playgroud)

ColumnHeaderView nib 实际上是一个 xib 文件,其视图包含单个标签。该视图链接到此类:

import UIKit

class ColumnHeaderView: UICollectionReusableView
{
    @IBOutlet weak var label: UILabel!
}
Run Code Online (Sandbox Code Playgroud)

数据源和布局:

import UIKit

class WeekViewDataSource: NSObject, UICollectionViewDataSource {

    var events = Array<String>()

    func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: …
Run Code Online (Sandbox Code Playgroud)

nib collectionview reuseidentifier ios swift

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

如何从操场内的笔尖获取视图?

在典型的Xcode项目中,您可以从这样的笔尖获取视图:

    var objects: NSArray?;
    NSBundle.mainBundle().loadNibNamed("ExampleView", owner: nil,
                                       topLevelObjects: &objects)
    var view :NSView
    for obj in objects! {
        if (obj.isMemberOfClass(NSView)) {
            view = obj as NSView
        }
    }
    // view is now the NSView object obtained from the nib. Yay.
Run Code Online (Sandbox Code Playgroud)

但是,如果我在同一个Xcode项目中创建一个游乐场并尝试获取视图,则上述代码将失败.实际上,loadNibNamed:owner:topLevelObjects:返回false,我们知道加载nib失败了.

即使我创建一个独立的游乐场,并将.xib文件放在Resources目录中,loadNibNamed:owner:topLevelObjects:仍然返回false.

为什么我不能loadNibNamed:owner:topLevelObjects:用来从操场上访问nib文件?这样做的正确方法是什么?

xcode cocoa nib nsbundle swift

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

无法从nib实例化UIView."警告:无法加载任何Objective-C类信息"

我得到"无法加载任何Objective-C类信息.这将显着降低可用类型信息的质量." 初始化此类的实例时在控制台中发出警告:

@IBDesignable
class SystemMessage: UIView{

    @IBOutlet weak var lbl_message: UILabel!

    var view: UIView!

    override init(frame: CGRect) {
        super.init(frame: frame)

        setup()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        setup()
    }

    func setup(){
        view = loadViewFromNib()

        view.autoresizingMask = [UIViewAutoresizing.FlexibleWidth, UIViewAutoresizing.FlexibleHeight]
        addSubview(view)
    }


    func loadViewFromNib() -> UIView{
        let bundle = NSBundle(forClass: self.dynamicType)
        let nib = UINib(nibName: "SystemMessage", bundle: bundle)
        let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView

        return view 
    }


}
Run Code Online (Sandbox Code Playgroud)

执行停止let view = nib.instantiateWithOwner..."线程1:EXC_BAD_ACCESS(代码= 2 ...)"

这背后可能的原因是什么?

xcode uiview nib ios swift

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

从笔尖创建的 UICollectionViewCell 中的奇怪 UIView

我有一个奇怪的视图出现在我的 UICollectionViewCell 子类中,它具有 2 个图像视图和 1 个按钮的简单结构。

final class ProfileImageCell:UICollectionViewCell {
    static var name: String { return "ProfileImageCell" }
    @IBOutlet weak var imageView: UIImageView!
    @IBOutlet weak var anotherImageView: UIImageView!
    func setup(...) { ... } 
    @IBAction func buttonAction(_ sender: UIButton) { ... }
}
Run Code Online (Sandbox Code Playgroud)

在 setup() 方法中,我设置了 imageViews 并传递了一些属性。我不创建任何视图或更改自我子视图。

然后在我的视图控制器中,我像往常一样设置 collectionView。

collectionView.register(UINib(nibName: ProfileImageCell.name, bundle: nil), forCellWithReuseIdentifier: ProfileImageCell.name)
Run Code Online (Sandbox Code Playgroud)

ProfileImageCell.xib

xib 结构

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: ProfileImageCell.name, for: indexPath) as! ProfileImageCell
    cell.setup(...)
    return cell
} …
Run Code Online (Sandbox Code Playgroud)

nib ios uicollectionview swift

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

保留IBOutlets的数量

虽然编码总是与IBOutlets的保留计数相同的问题出现了:从NIB取消归档对象后保留计数?何时使用@ property's作为IBOutlet?设置时保留或分配?Mac和iPhone之间的差异?

所以我从Apple的文档中读到了The Nib Object Life Cycle.Mac和iPhone上的一些测试应用程序给了我一些奇怪的结果.不过我写了一些规则如何处理这个问题,以便在编码时保持快乐,但现在想要与社区核实并倾听您的​​意见和经验:

  1. 始终为顶级对象创建IBOutlet.对于非顶级对象(如果需要)(需要访问).
  2. 始终为IBOutlets提供如下属性(并在必要时释放它们):
    • Mac上的顶级对象:
      • @property(nonatomic ,assign)IBOutlet SomeObject*someObject;
      • @synthesize someObject;
      • [self.someObject release ];
    • Mac上的非顶级对象(无版本):
      • @property(nonatomic,assign)IBOutlet NSWindow*窗口;
      • @synthesize someObject;
    • iPhone上的顶级对象(必须保留):
      • @property(nonatomic ,retain)IBOutlet SomeObject*someObject;
      • @synthesize someObject;
      • [self.someObject release ];
    • iPhone上的非顶级对象(应该保留):
      • @property(非原子,保留)IBOutlet UIWindow*窗口;
      • @synthesize窗口;
      • [self.window 发布 ];

附注:

  • 在Mac和iPhone插座上,使用setter进行连接(如果可用).
  • 顶级对象:"拥有[...]没有拥有对象"
  • 非顶级对象:"具有父对象或拥有对象的任何对象,例如嵌套在视图层次结构中的视图."

所以问题是:这是正确和良好的做法吗?

我希望你能批准或纠正它.

iphone macos cocoa objective-c nib

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

UIKit:以编程方式调用awakeFromNib?

我看到了这段代码:

CoolButton *coolButton = [[CoolButton alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 60.0f, 25.0f)];
[coolButton awakeFromNib];
// ...
[coolButton release];
Run Code Online (Sandbox Code Playgroud)

CoolButton子类UIButton.可以通过awakeFromNib编程方式调用吗?

如果我想要以-[CoolButton awakeFromNib]编程方式创建对象而不是从nib文件创建相同的事情,那么最好的方法是什么?

我应该定义一个方法,并调用它-[CoolButton awakeFromNib]-[CoolButton initWithFrame]?或者,是否有另一种我应该定义的初始化方法,在两种情况下都会被调用:无论是以CoolButton编程方式还是从nib文件创建?

uikit nib ios awakefromnib

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