考虑以下情况: 我有这个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所在的子视图。然后我可以将该元数据发送到其他方法。感谢。
答案 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);
}