UIScrollView上UIViewController上UILabel的属性

时间:2016-03-14 14:25:15

标签: ios uiscrollview subview

考虑以下情况: 我有这个myViewcontroller。在故事板上我添加了一个UIViewController,将其定义为myViewcontroller,上面有几个UILabel。我已将它们正确连接到IBOutlets。

然后,我有一个scrollview。我将myViewcontroller的实例添加到滚动视图中:

- (void)configureInfoViewController
{
    for (int i = 0; i < [Lists count]; i++) {
        myViewcontroller *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"myLabelLayout"];
        [self addChildViewController:vc];
    }
}

- (void)configureScrollView
{
    for (int i = 0; i < [self.childViewControllers count]; i++) {
        CGRect frame = theScrollView.frame;
        ...
        [[[self.childViewControllers objectAtIndex:i] view] setFrame:frame];
        [theScrollView addSubview:[[self.childViewControllers objectAtIndex:i] view]];
    }
}

因此,我在循环视图中有与列表中的对象一样多的子视图。到现在为止还挺好。 但是现在,我想在其中一个子视图中设置标签的文本。我想通过在myViewcontroller的同一个实例上推送UIButton来实现这一点。

问题是:如何设置myLable.title? 我希望这是有道理的。

我认为真正的问题是,困扰我: 我怎么知道我的UIButton所在的子视图。然后我可以将该元数据发送到其他方法。感谢。

1 个答案:

答案 0 :(得分:0)

我假设您已为标签创建了插座,当您按下按钮时,您只能访问标签并在按钮的IBAction方法中更改其文字?

这是你需要的,

#import "MyViewcontroller.h"

@implementation MyViewcontroller

- (IBAction)myButtonAction:(id)sender {
    _myLabel.text = @"My custom value";
}

@end

仅供参考,你的InfoViewController你的configureScrollView方法应该是这样的。我没有在您的代码中看到您的滚动视图内容大小已调整。

- (void)configureScrollView {
    for (int i=0; i<self.childViewControllers.count; i++) {
        CGRect frame = theScrollView.frame;
        // scrolling vertically here
        frame.origin.y = CGRectGetHeight(frame) * i;

        UIView *view = [[self.childViewControllers objectAtIndex:i] view];
        [view setFrame:frame];
        [theScrollView addSubview:view];
    }

    theScrollView.contentSize = CGSizeMake(CGRectGetWidth(theScrollView.frame), CGRectGetHeight(theScrollView.frame) * self.childViewControllers.count);
}