标签: nib

为什么在加载视图控制器时不调用我的initWithNib方法?

我有一个继承自UIViewController的类.在那里,我想做一些像这样的ivar初始化:

- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle { // Load the view nib
    NSLog(@"Hello Earth!");
    if (self = [super initWithNibName:nibName bundle:nibBundle]) {
        self.visibleIndex = 0;
        NSLog(@"Hello Planet!");
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我确实看到了从笔尖加载的内容.但由于另一个原因,永远不会调用此初始化程序.我从来没有收到日志消息.这有什么问题?我肯定有一个笔尖,所以实际上这必须被调用,对吧?

iphone cocoa-touch uiviewcontroller uikit nib

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

如何使用nib文件加载视图而不使用视图控制器

我是这个目标的新手 - 我想使用我按下按钮时创建的nib文件加载视图.不使用任何视图控制器..

iphone nib

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

initWithNibName无法按预期工作

我很肯定我在这里错过了一些简单的事情.我试图在iOS中将子视图(模态视图)加载为单独的控制器.我创建了一个NIB文件,其中一个窗口指向我的控制器视图,File的Owner类设置为我的控制器类,我尝试使用nib文件的名称调用initWithNibName,但是当我尝试显示它时,它只显示一个空白视图,而不是我在NIB文件中构建的视图.如果它是模态子控制器,它可以不是NIB中的窗口吗?或者还有其他一些我错过的东西吗?

iphone controller modal-dialog nib ios

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

获取正在查看的当前iPhone xib的名称

我有3个xib文件连接到同一个类,以减少重复编码.但是,在加载新的nib文件时(即在ViewDidLoad方法中),我想要完成不同的操作.我想过做一个if语句来比较当前显示的xib的名字和字符串.我一直试图弄清楚如何在一天的大部分时间里做到这一点,但我没有运气.如果这让你感到困惑,这里有一些伪代码:

if (currentXibInDisplay == @"XibFileName1")
   // Do This...
else if (currentXibInDisplay == @"XibFileName2")
   // Do This...
Run Code Online (Sandbox Code Playgroud)

有办法做到这一点,对吗?看起来很简单,但我现在很难过.感谢您提供的任何信息.

iphone compare xib nib ipad

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

在可可中加载笔尖

如何在另一个窗口内加载笔尖?

我试过initWithWindowName,

if (mmController == NULL)
    mmController = [[mainMenu alloc] initWithWindowNibName:@"mainMenu"];
[mmController showWindow:self];
Run Code Online (Sandbox Code Playgroud)

但它打开了一个新窗口.

我也尝试过loadNibNamed

[NSBundle loadNibNamed:@"mainGame" owner:self];
Run Code Online (Sandbox Code Playgroud)

它成功了,但当我尝试使用相同的方法返回主菜单时,

[NSBundle loadNibNamed:@"mainMenu" owner:self];
Run Code Online (Sandbox Code Playgroud)

它不起作用.它什么都不做......有什么想法吗?

cocoa nib

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

如何将app delegate添加回mainwindow.xib

简答:

从对象库中拖动一个Object并将其类设置为委托.

细节见下面的答案.

我不小心从mainwindow.xib中删除了app delegate.我到处查看,但仍无法找到将其添加回去的方法.我试图在网上找到它但仍然没有结果.任何人都可以帮我修复它吗?谢谢.

我的项目

我的项目

其他的项目

其他的项目,有appdelegate

的main.m

#import <UIKit/UIKit.h>

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, nil);
    }
}
Run Code Online (Sandbox Code Playgroud)

delegates xib nib ios

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

UIView默认样式有圆角吗?

我用a UIPopoverController来显示一个UIView.布局有点类似于a UISplitViewController所以看起来在"细节视图"上有圆角是非常奇怪的,因为它留下了一个小间隙.我还没有找到任何与其他有这个问题的人相关的东西,但这些圆角似乎是默认的样式.是否可以删除它们?

可能有用的事情:

  • 我从一个nib文件加载我的视图,但我目前没有更改默认值 UIView
  • 我尝试设置clipsToBound = NOviewDidLoad
  • 我尝试设置layer.cornerRadius = 0viewDidLoad

在视图的顶部似乎也有一个阴影,但很难说.有什么方法可以摆脱所有这些默认样式?我只想要一个空白的方块.

interface-builder uiview nib ios

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

我的自定义UIView dos没有收到触动

使用IB,我创建了一个包含几个按钮的小子视图.我的控制器从xib文件中读取小视图,并将其作为子视图添加到主视图中.加载好,我可以看到子视图及其所有按钮.据我所知,它还连接到控制器中的IBOutlets和IBActions.

但是,当我按下按钮时没有任何反应!事实上,当我按下一个按钮时,会调用超级视图的touchesBegan! 超级视图还包含一个"普通按钮"(即我的子视图的兄弟),该按钮工作正常!问题:为什么我的子视图上的按钮不起作用?

-(void) loadMultibutt{
    self.buttErase = nil; // test if the outlet connects
    NSArray *arr = [[NSBundle mainBundle]
                    loadNibNamed:@"multibutt_ipad" owner:self options:nil];

    UIView *viewButts = [arr objectAtIndex:0];
    ViewWorkbench* vw = (ViewWorkbench*) self.view;
    [vw addMultibuttView:viewButts];

    // now, buttErase != nil.
    NSSet *setTest = [self.buttErase allTargets];
    NSLog(@"setTest = %@", setTest); // This works!
}
Run Code Online (Sandbox Code Playgroud)

uiview nib ios

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

Invalid nib registered for identifier

我正在尝试获取在nib文件中创建的视图,以用作我的UITableView中的节头.我按照这里描述的第3个选项

http://hons82.blogspot.it/2014/05/uitableviewheader-done-right.html

但是我收到了这个错误

***由于未捕获的异常'NSInternalInconsistencyException'终止应用程序,原因:'为标识符注册的无效nib(sectionHeaderIndentifier) - nib必须包含一个必须是UITableViewHeaderFooterView实例的顶级对象'

这是我正在使用的代码

 UINib *sectionHeaderNib = [UINib nibWithNibName:@"headerNib" bundle:nil];

    NSString *SectionHeaderViewIdentifier = @"sectionHeaderIndentifier";

    [self.tableView registerNib:sectionHeaderNib forHeaderFooterViewReuseIdentifier:SectionHeaderViewIdentifier];
Run Code Online (Sandbox Code Playgroud)

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {

    NSString *SectionHeaderViewIdentifier = @"sectionHeaderIndentifier";

    HeaderSection *sectionHeaderView = [self.tableView dequeueReusableHeaderFooterViewWithIdentifier:SectionHeaderViewIdentifier];


    return sectionHeaderView;
}
Run Code Online (Sandbox Code Playgroud)

这是我的nib文件的屏幕截图.

在此输入图像描述

uitableview nib sectionheader ios

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

为什么在从XIB以编程方式创建UIView后,我的UILabel为零?(附代码)

问题:为什么UILabel在从XIB以编程方式创建UIView后,在init(代码附加)中没有?(参考下面的代码)这就是该行label1.text = "TBC - It was updated"引发错误

背景:我想以编程方式创建多个自定义视图,在这种情况下是多个GCDateView.我想使用一个XIB文件来布局自定义视图与关联类,以编程方式完成自定义,因此我在这里有一个GCDateView.swift和一个GCDateView.xib文件.

除了:作为第2搁置的问题,我注意到我从厦门国际银行文件GCDateView内创建视图不能直接分配是主视图(例如,在初始化结束时,我不能说self = gcDateViewView).也许我需要一个单独的问题.

从父控制器/视图中:

let dv = GCDateView()
Run Code Online (Sandbox Code Playgroud)

GCDateView:

import UIKit

class GCDateView : UIView {

    @IBOutlet weak var label1: UILabel!

    func commonInit() {
        // Programmtically use XIB file
        if self.subviews.count == 0 {
            let bundle = Bundle(for: type(of: self))
            let nib = UINib(nibName: "GCDateView", bundle: bundle)
            let gcDateViewView : UIView = nib.instantiate(withOwner: self, options: nil)[0] as! UIView
            gcDateViewView.frame = self.bounds
            gcDateViewView.autoresizingMask = …
Run Code Online (Sandbox Code Playgroud)

xib uiview nib ios swift3

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