标签: xib

正确的加载UIView子类的Nib的方法

我知道之前已经问过这个问题,但答案是矛盾的,我很困惑,所以请不要激怒我.

我希望UIView在我的应用程序中有一个可重用的子类.我想用nib文件描述接口.

现在让我们说它是一个加载指示器视图,其中包含一个活动指示器.我希望在某个事件上实例化此视图并激活到视图控制器的视图.我可以用编程方式描述视图的界面没有问题,以编程方式创建元素并在init方法中设置它们的框架等.

我怎么能用笔尖做到这一点?维护界面构建器中给出的大小而不必设置框架.

我已经设法这样做,但我确定它是错的(它只是一个带有选择器的视图):

 - (id)initWithDataSource:(NSDictionary *)dataSource {
        self = [super init];
        if (self){
            self = [[[NSBundle mainBundle] loadNibNamed:[NSString stringWithFormat:@"%@", [self class]] owner:self options:nil] objectAtIndex:0];
            self.pickerViewData = dataSource;
            [self configurePickerView];
        }
        return self;
    }
Run Code Online (Sandbox Code Playgroud)

但是我覆盖了自己,当我实例化它时:

FSASelectView *selectView = [[FSASelectView alloc] initWithDataSource:selectViewDictionary];
    selectView.delegate = self;

    selectView.frame = CGRectMake(0, self.view.bottom + 50, [FSASelectView width], [FSASelectView height]);
Run Code Online (Sandbox Code Playgroud)

我必须手动设置框架而不是从IB中拾取它.

编辑:我想在视图控制器中创建此自定义视图,并有权控制视图的元素.我不想要一个新的视图控制器.

谢谢

编辑:我不知道这是不是最好的做法,我确定不是,但这就是我做的方式:

FSASelectView *selectView = [[[NSBundle mainBundle] loadNibNamed:[NSString stringWithFormat:@"%@",[FSASelectView class]] owner:self options:nil] objectAtIndex:0];
    selectView.delegate = self;
    [selectView configurePickerViewWithData:ds];
    selectView.frame = CGRectMake(0, …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c xib uiview ios

98
推荐指数
5
解决办法
10万
查看次数

使用Storyboard自定义视图

在复杂的屏幕(视图控制器)中,我曾经将整个事物分成小块(我称之为小部件).这些小部件基本上由一个MyWidget.h和一个MyWidget.m文件以及一个MyWidget.xib文件组成,其中根元素是a UIView,而MyWidget类是UIView的文件所有者.在这个小部件的init中,我做了一个loadNibNamed.

在我的View Controller中,然后执行a [[MyWidget alloc] init],我将其作为子视图添加到View的Controller主视图中.到目前为止,这完美地运作.

我现在想知道,如何对故事板做同样的事情,因为我无法真正开始拖入UIView某个地方,我总是要从一个开始UIViewController,我不想这样做.

如果使用Storyboard无法做到这一点,我可以简单地使用故事板进行主屏幕和segue,并使用单独的.xib文件来定义自定义视图吗?

storyboard xib ios

96
推荐指数
2
解决办法
7万
查看次数

将iPhone xib转换为iPad xib?

你怎么做呢?我看到了一个视频教程,但屏幕太小了.此外,除了更改视图大小外,我还需要对我的iphone应用程序进行其他重大更改才能转换为iPad吗?

iphone xcode xib ipad ios

75
推荐指数
7
解决办法
5万
查看次数

在故事板中重用uiview xib

我通常喜欢在界面构建器中创建和设计我的uiviews.有时我需要在xib中创建一个可以在故事板中的多个视图控制器中重用的视图.

interface-builder xib uiview uistoryboard autolayout

74
推荐指数
4
解决办法
3万
查看次数

在iOS编程中使用Storyboard而不是xib文件有什么好处?

使用Storyboard和xib文件有什么主要区别.

具体来说,使用故事板有什么优缺点

遗憾的是,尽管进行了大量的研究,我在故事板上找到的所有内容都是简单的教程,向您展示如何设置故事板,而不是具体的信息来解释它们是什么.

xcode interface-builder storyboard xib ios

70
推荐指数
5
解决办法
4万
查看次数

IOS项目在xcode 7.1上显示错误"发生内部错误.编辑功能可能受限"

我刚刚通过CLI创建了一个新的cordova ios项目,我在Xcode 7.1中打开了该项目,并且在模拟器上运行时在mainViewController.xib上出现了一些错误,如果我们点击该错误它显示的xib文件并在其上显示一个警告消息"发生内部错误.编辑功能可能受限".所以我无法运行这个项目.

我不知道这是由于Xcode bug还是cordova bug或我的Xcode中的任何其他设置问题.

在此输入图像描述

xcode xib ios cordova xcode7.1

67
推荐指数
5
解决办法
3万
查看次数

将自定义子视图(在xib中创建)添加到视图控制器的视图中 - 我做错了什么

我在xib中创建了一个视图(带有活动指示器,进度视图和标签).然后我创建了.h/.m文件:

#import <UIKit/UIKit.h>

@interface MyCustomView : UIView {
    IBOutlet UIActivityIndicatorView *actIndicator;
    IBOutlet UIProgressView *progressBar;
    IBOutlet UILabel *statusMsg;
}

@end

#import "MyCustomView.h"

@implementation MyCustomView    

- (id)initWithFrame:(CGRect)frame {
    if ((self = [super initWithFrame:frame])) {
        // Initialization code
    }
    return self;
}

- (void)dealloc {
    [super dealloc];
}

@end
Run Code Online (Sandbox Code Playgroud)

在IB中,我将文件的所有者和查看标识设置为MyCustomView并将IBOutlet连接到文件的所有者

在MyViewController.m中,我:

- (void)viewDidLoad {

    [super viewDidLoad];   

    UIView *subView = [[MyCustomView alloc] initWithFrame:myTableView.frame];
    [subView setBackgroundColor:[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.5]];

    [myTableView addSubview:subView];
    [subView release];
}
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序时,视图已添加,但我看不到标签,进度条和活动指示器.

我究竟做错了什么?

objective-c xib addsubview ios

61
推荐指数
1
解决办法
8万
查看次数

将xib分配给Swift中的UIView

在目标c中,它可以在init方法中完成

-(id)init{
    self = [[[NSBundle mainBundle] loadNibNamed:@"ViewBtnWishList" owner:0 options:nil]     objectAtIndex:0];
return self;
}
Run Code Online (Sandbox Code Playgroud)

但是当我快速地这样做时

init(frame: CGRect) {
    self = NSBundle.mainBundle().loadNibNamed("ViewDetailMenu", owner: 0, options: nil)[0] as? UIView
}
Run Code Online (Sandbox Code Playgroud)

无法在方法中分配给self自己显示错误.现在我的方法是创建一个视图,并将从nib加载的视图添加到它.谁都有更好的主意?

xib uiview swift

58
推荐指数
4
解决办法
6万
查看次数

如何避免Xcode对故事板文件的无偿编辑?

当我导航到我的一个xib文件时,Xcode将文件标记为触摸.撤消和还原无效.保存似乎没有坏处,但是故障导致我经常额外的git工作.

有没有其他人看到这个或对我的MainWindow.xib中的某些东西有所了解会导致它?

2016年编辑 - 仍在发生!

xcode xib

57
推荐指数
2
解决办法
5343
查看次数

故事板与旧的XIB方式

我是iOS的新手,想知道哪个是最好的学习.我已经在这里阅读了一些答案,但有些人说使用Storyboard会让其他人先说学习XIB.学习XIB有什么好处吗?XIB更容易理解并有助于故事板吗?

storyboard xib ios

55
推荐指数
2
解决办法
3万
查看次数