我的iOS应用程序具有根视图控制器,并且我想在运行时为其添加一些自定义UIView
。我称这些自定义视图小部件,因为它们很小,除了大小,标签文本等基本相同。iOS - 将自定义UIView放入视图控制器
我为小部件和.xib文件创建了.h和.m。在我的根视图控制器viewDidLoad
我这样做:
TestMyView *cell = [[[NSBundle mainBundle] loadNibNamed:@"TestMyView" owner:self options:nil] objectAtIndex:0];
[self.view addSubview: cell];
它工作正常。不过,我仍然想不通:
- 为什么有例外
"[<TestViewController 0x7517210> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key mylabel"
如果我添加UILabel
mylabel IBOutlet中为我的自定义UIView类.h文件中。 (我拖放在IB中的UILabel,然后控制拖动到.h)创建视图时,我需要更改标签文本。我不明白为什么它会抱怨TestViewController,而我没有添加IBOutlet,但我的自定义视图.h类? - 那么我该如何正确更改标签文本呢?我不想为我的小部件创建视图控制器,因为我认为这不是必需的。我需要创建5-6个小部件,所以我需要为它们创建5-6个视图控制器?
- 它似乎initWithCoder不会调用时,我创建的部件?我看到苹果文档库说,如果从nib文件加载视图,这个方法会被调用。
如果你认为我吸在解释这一点,这是我的项目代码: https://dl.dropbox.com/u/43017476/custom.tar.gz
第一点是正确的,它可能是一个问题。但对于第二个,我有一个问题。当我们在xib中创建视图时,为什么我们需要在代码中再次设置一个框架?而且当我们从nsbundle数组视图中提取视图时,我们需要输入我认为的类型。 +1 – 2013-02-16 18:00:14
您可以在IB中创建视图并将您的自定义类分配给它。不过,@Lukas动态创建'小部件'视图,几乎肯定会以编程方式将它们放置在屏幕上。在其他情况下,您可能不需要设置框架。 NSArray包含NSObject;而UIView是一个NSObject(子类)。我不认为演员缺乏会产生警告或降低可读性,但肯定不会伤害任何东西。 – Dave 2013-02-16 18:12:35
我不知道你在ios中的widget意见是什么意思。 – 2013-02-16 18:15:29