我在单独的文件中有ViewController
和View
。
在ViewController
我添加了这样的视图:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
mainView = [[MainView alloc] init];
[self setView: mainView];
}
return self;
}
在mainView
中有一个标签,添加为SubView
。我想从我的控制器更改标签文本。我该怎么办?
我无法弄清楚如何从控制器访问标签。
答案 0 :(得分:1)
标签需要在MainView中公开,例如财产。
然后您可以访问该属性,如:
[[(MainView *)[self view] labelProperty] setText: @"foo"];
或更具可读性:
MainView *mainView = (MainView *)self.view;
mainView.labelProperty.text = @"foo";
答案 1 :(得分:0)
如果mainView
只有标签作为子视图且没有其他子视图,您可以使用
UILabel *label = (UILabel *)[mainView.subviews objectAtIndex:0];
然后将其文本设置为:
label.text = @"your text";
这是“快速而肮脏”的方式。
更好的解决方案是在property
为您要修改的每个子视图中创建ViewController
。 CTRL +将标签拖到ViewController.h
文件中,Xcode应自动添加行
@property (strong, nonatomic) IBOutlet UILabel *label;
然后,您可以使用
轻松访问ViewController
中任意位置的标签
label.text = @"your text";
答案 2 :(得分:0)
另一种方法。
在MainView.m中标记您正在创建它的标签
yourLabel.tag = 'urlb'
在ViewController中
UILabel *lbl = (UILabel *)[mainView viewWithTag:'urlb'];
[lbl setText: @"what is the problem"];