使用UIViewController子类的自定义iPhone控件

使用UIViewController子类的自定义iPhone控件,iphone,uiviewcontroller,interface-builder,Iphone,Uiviewcontroller,Interface Builder,我想要一个像UISlider一样的控件,但是它有两个拇指而不是一个拇指,这样您就可以指定一个范围而不是一个值。我读到其他人也在寻找同样的东西,关于制定新的控制措施的建议让我不知所措 所以我决定在nib中设置我想要的,然后创建一个视图控制器来处理它的行为。事实上,这种方式非常有效,可以接受两件事 1) 要将我的“自定义控件”加载到另一个nib中,我需要通过如下代码来完成 MaxMinSliderViewController *feeMaxMinSlider = [[MaxMinSlide

我想要一个像UISlider一样的控件,但是它有两个拇指而不是一个拇指,这样您就可以指定一个范围而不是一个值。我读到其他人也在寻找同样的东西,关于制定新的控制措施的建议让我不知所措

所以我决定在nib中设置我想要的,然后创建一个视图控制器来处理它的行为。事实上,这种方式非常有效,可以接受两件事

1) 要将我的“自定义控件”加载到另一个nib中,我需要通过如下代码来完成

MaxMinSliderViewController *feeMaxMinSlider = 
    [[MaxMinSliderViewController alloc] init];
[self.view addSubview:feeMaxMinSlider.view];
feeMaxMinSlider.view.frame = CGRectMake(20, 20, 280, 54);
…而不是像普通IB控件那样拖放到其他NIB中。有没有一个简单的方法可以做到这一点

2) 在我阅读的所有关于这样做的文章中,似乎我应该(以正确的方式)将UIView子类化,而不是UIViewController。我无法正确设置UIView并使其工作

想法

而不是拖放到 其他NIB与正常IB控件类似。是 有一个简单的方法可以做到 这个


不!只有一个

假设您成功地将类转换为自定义UIView而不是UIViewController,则可以在Interface Builder中轻松地完成部分转换(取决于自定义控件的初始化方法)

在Interface Builder中,将普通的旧UIView从库窗口拖放到视图上,并根据需要定位/调整其大小

然后选择UIView,切换到Inspector窗口的Identity选项卡(该选项卡上有一个小(i)图标),并将其从UIView更改为自定义类的名称。这会导致在加载NIB时实例化自定义类的实例,而不是空的UIView

然后,您可以像往常一样将视图连接到IBOutlet等

这种方法的优点是能够直观地定位和调整控件的大小等。但是,它只显示为矩形,并且您无法像使用UI按钮或类似控件那样以图形方式配置控件的其他属性,而Interface Builder对这些控件提供了额外的支持

我觉得这项技术很棒,因为我不是一个很好的视觉思考者,当我阅读一段包含大量frame=CGRectMake(20,20,280,54)等内容的代码时,我很难在脑海中想象事情会是什么样子。能够用鼠标直观地完成这项工作对我来说要好得多。

有一个Interface Builder插件编程指南,但它只提到MacOSX,没有提到iPhone


另外,从XCode 3.2.1开始,只有一个用于创建Mac OS X IB插件的新项目模板;iPhone(Cocoa Touch)没有这样的项目模板。所以我猜这不适用于iPhone。

不幸的是,不适用,但从那时起,XCode和iOS已经有了好几个版本,所以可能已经添加了它。但我对此表示怀疑。