标签: nib

你可以将NIB文件换成已经在屏幕上的UIViewController吗?

例如:

  1. 使用"nib-v1"使用initWithNibName创建一个新的UIVC
  2. 显示它,例如使用[(UINavigationController)nav pushViewController:myVC]
  3. 将myVC正在使用的NIB更改为"nib-v2"

据我所知,这是许多应用程序的应用程序设计的"正确"方法,在分析信息时,您需要两个稍微不同的UI屏幕来显示信息.

例如,您的大多数页面都是文本,但其中一些页面也有图像(想想RSS阅读器,其中一些RSS条目有文本+图像,有些只有文本).

我之前通过使用一个NIB文件和第二个不可见的名为UIView的实例处理了这个问题,我在第一个实例的顶部分层,并根据上下文使用"隐藏"标志打开/关闭.

但这显然是错误的,浪费了记忆.

但是,我看不到从NIB文件"重新加载"视图的明显方法.我猜我想以某种方式重现initWithNibName所做的魔术?

我怀疑这是可能的,但我敢肯定,如果你以"错误的方式"做到这一点,那么该应用程序将简单地崩溃.

iphone uiviewcontroller nib

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

在Cocoa中,为什么在IBAction完全执行之后才会显示文本字段?

我有一个内部有一些简单代码的IBAction:

-(IBAction)change:(id)sender {
    [textfield setHidden:NO];
    [self dolengthyaction];
}
Run Code Online (Sandbox Code Playgroud)

'textfield'是nib文件中的NSTextField,-'dolengthyaction'是一个大约需要一分钟才能完成执行的函数.

我的问题是:为什么在"dolengthyaction"执行完之后才显示文本字段?我希望在dolengthyaction开始之前揭示它.这是一个固有的问题还是我的代码有问题?(或在我的代码的另一部分?)

我仍然不擅长编程,所以如果我措辞严厉并且格式错误,我会道歉.

编辑:除了这个IBAction和-dolengthyaction之外别无其他......

-(void)doLengthyAction {
    sleep(10);
}
-(IBAction)change:(id)sender {
    [textfield setHidden:NO];
    [self doLengthyAction];
    [textfield setHidden:YES];
}
Run Code Online (Sandbox Code Playgroud)

我真正想做的就是在动作运行时显示标签,并在动作完成后隐藏它.

基本上这意味着它现在还没有显示出来.

实际上,在-doLengthyAction中它不是睡眠(10)而是一个复制大约50 Mb材料的NSFileManager操作.代码相当长,但如果你想让我发布它我可以.我用sleep()测试了它,但它也不起作用.

cocoa objective-c interface-builder nib ibaction

0
推荐指数
2
解决办法
837
查看次数

UIViewController initWithNibName导致nil视图

我正在尝试制作一个始终加载相同笔尖的视图控制器.我的初始化代码如下所示:

-(id)init
{
    NSString* nibName;

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
        nibName = @"XIB_iPad";
    else
        nibName = @"XIB_iPhone";

    self = [super initWithNibName:nibName bundle:nil];
    if (self)
    {
        ...
    }
    return self;
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    return [self init];
}
Run Code Online (Sandbox Code Playgroud)

问题是该代码导致视图控制器具有零视图.我有什么问题吗?有一个更好的方法吗?

谢谢.

iphone uiviewcontroller uiview nib ios

0
推荐指数
2
解决办法
5054
查看次数

XCode不会通过控件单击绑定nib和源头文件

我向现有项目添加了一个带有接口 (.h)、实现 (.m) 文件和 UI (.xib) 的自定义视图控制器类。

当我在笔尖和界面之间按住 Ctrl 键单击并拖动时,拖动时不会放置插座或 IBAction,因此我无法将 UI 元素链接到属性。另外,当我在助理编辑器模式下查看笔尖时,XCode 不会调出相应的界面文件。

注意:我更改了自定义类的名称。我更改了文件名以及源代码中对其的引用。

xcode xib nib ios

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

为iPhone 4和iPhone 5使用两个不同的nib文件

有没有办法检测用户使用的设备,然后使用该信息,使应用程序使用特定的nib文件?

现在,我的代码是

- (BOOL)application: (UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions{
  if(isiPhone5){
    self.RootViewController = @"RootViewController_iPhone5";
  }
  else{
    self.RootViewController = @"RootViewController_iPhone4";
  }
}
Run Code Online (Sandbox Code Playgroud)

我找到设备的其他代码可以工作并告诉我用户正在使用什么设备,但实际上并没有将.xib文件更改RootViewController_iPhone4.xibRootViewController_iPhone5.xib.有没有办法做到这一点?

我不想使用自动布局,因为我想根据设备发生其他自定义事件,例如视图控制器中的不同按钮名称,如果使用的设备是iPhone 4和iPhone 5

objective-c xib nib

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

无法加载捆绑包中的 NIB

2016-06-10 16:16:15.340 SwipePageTest[4625:434547] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/Alexk/Library/Developer/CoreSimulator/Devices/1A09A104-D0BF-44EA-8FAD-B90A3599FF8C/data/Containers/Bundle/Application/3213D8DB-6294-43C0-A4F6-AF075812EE3D/SwipePageTest.app> (loaded)' with name 'ViewControler0''
*** First throw call stack:
(
    0   CoreFoundation                      0x00000001087cfd85 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x000000010a573deb objc_exception_throw + 48
    2   CoreFoundation                      0x00000001087cfcbd +[NSException raise:format:] + 205
    3   UIKit                               0x00000001093bfc89 -[UINib instantiateWithOwner:options:] + 499
    4   UIKit                               0x00000001091918d6 -[UIViewController _loadViewFromNibNamed:bundle:] + 381
    5   UIKit                               0x0000000109192202 -[UIViewController loadView] + 178
    6   UIKit                               0x0000000109192560 -[UIViewController loadViewIfRequired] + 138
    7   UIKit                               0x0000000109192cd3 …
Run Code Online (Sandbox Code Playgroud)

nib ios swift

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

笔尖或故事板中的UITableViewCell

您好,在自定义UITableViewCell上使用nib或storyboard有什么区别?我打算使用具有动态高度的自定义uitableviewcell创建Facebook News Feed.使用哪个更灵活?

编辑:你为什么要对我的问题进行投票?我的帖子上没有发现问题.

objective-c uitableview nib ios uistoryboard

-5
推荐指数
1
解决办法
112
查看次数

如何使用nib加载View Controller SubClass而不将nib名称指定为字符串?

以编程方式加载UIViewController子类时,如果您将任何文件命名为与子类不同的名称,则不会加载与该ViewController关联的任何nib.

自动加载的笔尖,而不通过一个字符串名来初始化的唯一途径,是确保您x.nibclass.swift具有相同的名称SubClass.

有没有解决的办法?

nib ios swift

-6
推荐指数
1
解决办法
787
查看次数