从ViewController访问视图子视图

时间:2014-02-12 17:33:52

标签: ios objective-c

我在单独的文件中有ViewControllerView。 在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。我想从我的控制器更改标签文本。我该怎么办?

我无法弄清楚如何从控制器访问标签。

3 个答案:

答案 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"];