3

このコードを使用して複数のラベルを作成しましたが、

.H ファイル

@interface ViewController : UIViewController
{
    NSArray * phraseAry ;
    UIView * containerView;
    UILabel * oldLabel;
    NSMutableArray *dataArray;
}
@property (strong, nonatomic) IBOutlet UIScrollView *myScrollView;

.M ファイル

- (void)viewDidLoad
{
    [super viewDidLoad];

    heightValue = 20;
    widthValue = 0;
    xValue = 5;
    yValue = 10;

containerView = [[UIView alloc] init];
    for (int i=0; i<phraseAry.count; i++) {
        widthValue = [self returnWidth:[phraseAry objectAtIndex:i]];

        int newXValue = xValue+widthValue+5;

        //NSLog(@"newXValue : %i",newXValue);
        if (newXValue > 310) {
            yValue +=20;
            xValue = 5;
            newXValue = xValue+widthValue+5;
            UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(xValue, yValue, widthValue, heightValue)];
            lbl.text = [phraseAry objectAtIndex:i];
            [lbl setFont:[UIFont fontWithName:@"Helvetica" size:14.0]];
            lbl.tag = i;
            lbl.textColor = [UIColor colorWithRed:(92/255.0) green:(109/255.0) blue:(43/255.0) alpha:1];
            [containerView addSubview:lbl];
            xValue = newXValue;
        } else {
            UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(xValue, yValue, widthValue, heightValue)];
            lbl.text = [phraseAry objectAtIndex:i];
            [lbl setFont:[UIFont fontWithName:@"Helvetica" size:14.0]];
            lbl.tag = i;
            lbl.textColor = [UIColor colorWithRed:(92/255.0) green:(109/255.0) blue:(43/255.0) alpha:1];
            [containerView addSubview:lbl];
            xValue = newXValue;
        }
    }

    containerView.frame = CGRectMake(0, 0, 320, yValue);
    //add code to customize, e.g. polygonView.backgroundColor = [UIColor blackColor];
    [self.myScrollView addSubview:containerView];
    self.myScrollView.contentSize = containerView.frame.size;
}

そして、このコードを使用して特定のテーブルに背景色とテキストカラーを設定するよりも

- (void)updateLabelMethod
 {
            oldLabel.backgroundColor = [UIColor clearColor];
            UILabel *label = (UILabel *)[containerView viewWithTag:2];
            oldLabel = label;
            label.backgroundColor = [UIColor colorWithRed:(98/255.0) green:(147/255.0) blue:(216/255.0) alpha:1];
            label.textColor = [UIColor whiteColor];
            containerView.backgroundColor = [UIColor clearColor];
}

ラベルの背景は正常に更新されますが、このコードを使用してテキストカラーを更新すると、このようなエラーが表示されます

キャッチされていない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: '-[UIView setTextColor:]: 認識されないセレクターがインスタンス 0xbaa3b30 に送信されました'

テキストカラーを設定する方法はありますか? 助けてください。

4

3 に答える 3

3

デフォルトでは、すべてのビューのタグ値が 0 であるため、ラベル タグを 0 ではなく 1 から開始します。

lbl.tag = i+1; 

なぜなら

UILabel *label = (UILabel *)[containerView viewWithTag:0];  

containerViewそれ自体を返し、プロパティをUIView持たない:PtextColor

于 2013-07-23T12:59:55.523 に答える