使用委托更改标签文字颜色 [英] Change label text color using delegate

查看:137
本文介绍了使用委托更改标签文字颜色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个视图控制器, ParentViewController 具有使用 SecondViewController 更新的标签。
现在我想从 ChildViewController 更改 ParentViewController 的标签文本颜色,因为我正在使用协议并且委托但它显示错误。

I have two view controller, ParentViewController have label that updated using SecondViewController. Now I want to change ParentViewController's label text color from ChildViewController, for that i am using protocol and delegate but it shows error.

我的代码是这样的:

ChildViewController.h

ChildViewController.h

@protocol ViewControllerDelegate

-(void) updateLabel;

@end
@interface ChildViewController : UIViewController<UITextFieldDelegate,UITextViewDelegate>
{
    id <ViewControllerDelegate> delegate;
}

@property (assign) id <ViewControllerDelegate> delegate;
@end

ChildViewController.m

ChildViewController.m

@implementation childViewController

@synthesize delegate;

- (IBAction)backBtn:(id)sender {
    [delegate updateLabel];
}
@end

ParentViewController.h

ParentViewController.h

#import <UIKit/UIKit.h>
#import "childViewController.h"

@interface ParentViewController : UIViewController<UserResizableViewDelegate,ViewControllerDelegate>

@end

ParentViewController.m

ParentViewController.m

@implementation ParentViewController

- (void)viewDidLoad
{
   ChildViewController.delegate=self;   //here it show error that ChildViewController does not have property delegate
}
- (void)updateLabel
{
    alabel.textColor = [UIColor blueColor];
}

@end

更新

UPDATE

这是我如何创建标签

ParentViewController.m

ParentViewController.m

- (void)viewDidLoad
{
CGRect imageFrame = CGRectMake(10, 10, 150, 80);
    labelResizableView = [[UserResizableView alloc] initWithFrame:imageFrame];
    alabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 100, 100)];

    alabel.text = @"Drag me!";
    //alabel.text = self.newsAsset.title;
    alabel.adjustsFontSizeToFitWidth = NO;
    alabel.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    alabel.font = [UIFont boldSystemFontOfSize:18.0];
    //alabel.textColor = [UIColor blueColor];    
    // alabel.shadowColor = [UIColor whiteColor];
    // alabel.shadowOffset = CGSizeMake(0, 1);
    alabel.backgroundColor = [UIColor clearColor];
    alabel.lineBreakMode = UILineBreakModeWordWrap;
    alabel.numberOfLines = 10;
    alabel.minimumFontSize = 8.;
    alabel.adjustsFontSizeToFitWidth = YES;
    [alabel sizeToFit];
    labelResizableView.autoresizingMask = UIViewAutoresizingFlexibleWidth;



    // enable touch delivery
    alabel.userInteractionEnabled = YES;

    UITapGestureRecognizer *doubleTap =[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelTap:)]; 
    doubleTap.numberOfTapsRequired = 2; 
    [self.view addGestureRecognizer:doubleTap];

    //Calculate the expected size based on the font and linebreak mode of your label
    CGSize maximumLabelSize = CGSizeMake(296,9999);

    CGSize expectedLabelSize = [myString sizeWithFont:alabel.font 
                                    constrainedToSize:maximumLabelSize 
                                        lineBreakMode:alabel.lineBreakMode]; 


    //adjust the label the the new height.
    CGRect newFrame = alabel.frame;
    newFrame.size.height = expectedLabelSize.height+40;
    newFrame.size.width = expectedLabelSize.width+40;

    alabel.frame = newFrame;
    labelResizableView.frame = newFrame;

    labelResizableView.contentView = alabel;
    labelResizableView.delegate = self;
    [self.view addSubview:labelResizableView];

}

当用户点击标签然后

- (void)labelTap:(UITapGestureRecognizer *)tapGesture {
    ChildViewController *childViewController = [[ChildViewController alloc] initWithNibName:@"ChildViewController" bundle:[NSBundle mainBundle]];


    [self presentModalViewController:childViewController animated:NO];

}

和在ChildViewCoontroller中,当用户单击完成按钮然后

and in ChildViewCoontroller when user click done button then

-(IBAction)doneBtn:(id)sender
{

    [adelegate updateLabel];

     [self dismissModalViewControllerAnimated:NO];

}


推荐答案

#import <UIKit/UIKit.h>
#import "childViewController.h"

@interface ParentViewController : UIViewController<UserResizableViewDelegate,ViewControllerDelegate>

@property (strong, nonatomic) ChildViewController *childViewController;

@end

@implementation ParentViewController

- (void)viewDidLoad
{
    self.childViewController = [[ChildViewController alloc] init];
    childViewController.delegate=self;   //here it show error that ChildViewController does not have property delegate
}
@end

这篇关于使用委托更改标签文字颜色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆