iphone - Storyboard和 xib 在同一个项目中使用

标签 iphone objective-c class storyboard xib

我对我认为可能是对 Objective-C 中类的工作方式的根本误解感到困惑。我正在使用 Storyboard,但在此应用程序中,我想为我的一个 View Controller 上的文本字段创建一个简单的自定义日期选择器 View 。但是,我似乎在从我的 View Controller 访问日期选择器类的任何属性时遇到问题:

首先,我在 IB 中对我的 CustomDatePicker.xib 建模如下:

enter image description here

我通过子类化 UIView 创建了一个自定义类,如下所示:

自定义选择器.h

@interface CustomPickerView : UIView

@property (strong, nonatomic) IBOutlet UIDatePicker* datePicker;

@end

CustomerPicker.m

@implementation CustomPickerView

- (id)init
{
    self = [super initWithFrame:CGRectMake(0, 0, 320, 258)];
    if (self) {
        [self addSubview:[[[NSBundle mainBundle] loadNibNamed:@"CustomPickerView" owner:self options:nil] objectAtIndex:0]];
    }
    return self;
}

在我的 ViewController 中:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.customPickerView=[[CustomPickerView alloc] init];

    // THE MAIN ISSUE IS...
    // Following line has no effect on how picker is presented ???
    self.customPickerView.datePicker.datePickerMode=UIDatePickerModeTime;

    self.dateField.inputView=self.customPickerView;
}

点击文本字段时,我的 CustomDatePicker 会正常弹出。但是,我似乎无法通过 ViewController 的 viewDidLoad 方法设置 .datePickerMode。我可以更改 .datePickerMode 的唯一方法是通过 IB,当然这在运行时不起作用。

我已经连接了 IB 中的 socket ,并且能够从类中访问 datePicker.date,但不能访问 ViewController。

我研究并查看了多种实现此概念的方法。我的问题不是如何实现 CustomDatePicker,而是“为什么我不能从实例化它的 ViewController 访问我的 CustomDatePicker 的属性?

最佳答案

当我像这样加载 NIB 时,我成功地更改了 datePickerMode 属性:

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSArray *nibArray = [[NSBundle mainBundle] loadNibNamed:@"CustomPickerView" owner:self options:nil];
    self.customPickerView = (CustomPickerView *)[nibArray objectAtIndex:0];
    self.customPickerView.datePicker.datePickerMode = UIDatePickerModeTime;

    self.dateField.inputView = self.customPickerView;
}

而且您可以完全删除自定义 View 的 init 方法。我从未见过像您这样在 init 方法中加载的 NIB。虽然有可能,但我相信这就是导致您出现问题的原因。在 ViewController 的 viewDidLoad 中加载 NIB 并直接设置它似乎更直接。

关于iphone - Storyboard和 xib 在同一个项目中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18516318/

相关文章:

iphone - 单元测试核心数据 - 异常退出,代码为 134

iphone - Objective-C 属性 - 使用 [self myProperty] 或 self.myProperty 是否比 myProperty 慢?

python - Django 模型 - 导入问题

algorithm - 关于类的一般编程问题

iphone - 如何实时修改Settings.bundle?

iphone - iPhone麦克风音量

ios - 在 objective-c 中实现抽象类时,设置BOOL的默认值TRUE

c++ - 为什么模板参数推导不适用于仅指定前两个参数的可变参数模板类?

iphone - iPhone 与 Android 上的 Web 应用程序性能

iphone - 如何自动调整子层大小