0

どうすればUIViewその内容を複製できるのかわかりません。それとも可能ですか?

UIView.xibファイル内にラベルとボタンを作成しました。ここで、このビューを異なるラベルテキストでのみn回コピーしたいと思います。

私はこのようにこれを行おうとしていますが、そのようにすると、最後に表示されたオブジェクトしか取得できません。_view1IBOutletようなもの_view1Labelです。

    NSMutableArray *Info = [[NSMutableArray alloc]initWithCapacity:number.intValue];
    for(int i = 0; i != number.intValue; i++)
    {
        NSString *number = [NSString stringWithFormat:@"Zona%i ",[[NSUserDefaults standardUserDefaults] stringForKey:@"ObjectNumber"].intValue];
        NSString *zona = [NSString stringWithFormat:@"%@%i",number, i+1];
        NSString *parinkta = [[NSUserDefaults standardUserDefaults] stringForKey:zona];
        _view1Label.text = parinkta;
        _view1.hidden = false;
        CGRect newrect = CGRectMake(_view1.frame.origin.x, _view1.frame.origin.y + (80 * i), _view1.frame.size.width, _view1.frame.size.height);
        _view1.frame = newrect;
        [Info addObject:_view1];
    }
    for(int i = 0; i != number.intValue; i++)
    {
        UIView *add = [Info objectAtIndex:i];
        [self.view addSubview:add];
    }

あなたは私がやろうとしていることを理解するだろうと思います、多分これをするという私の考えは完全に間違っているので、誰かが私がこれの道を進むのを手伝ってくれるでしょうか?

4

3 に答える 3

1

ペン先からビューを複数回ロードし、ロードする各コピーのラベルの内容を調整します。これは、実行しようとしているUIViewのコンテンツをメモリ内にコピーしようとするよりもはるかに簡単で、短く、エラーが発生しにくくなります。

UINibペン先のコンテンツにアクセスするために使用する例を次に示します。

 UINib *nib = [UINib nibWithNibName:@"nibName" bundle:nil];
 NSArray *nibContents = [nib instantiateWithOwner:nil options:nil];

 // Now nibContents contains the top level items from the nib.
 // So a solitary top level UIView will be accessible
 // as [nibContents objectAtIndex:0]

 UIView *view = (UIView *)[nibContents objectAtIndex:0];

 // assumes you've set the tag of your label to '1' in interface builder
 UILabel *label = (UILabel *)[view viewWithTag:1];
 label.text = @"My new text";

したがって、必要なペン先インスタンスごとに上記のコードを繰り返すだけです。

于 2012-12-04T08:53:22.353 に答える
0

コードを介して最初のビューを作成した場合は、次の方法を使用できます。

次のようにforループを変更します。

for(int i = 0; i != number.intValue; i++)
    {
        NSString *number = [NSString stringWithFormat:@"Zona%i ",[[NSUserDefaults standardUserDefaults] stringForKey:@"ObjectNumber"].intValue];
        NSString *zona = [NSString stringWithFormat:@"%@%i",number, i+1];
        NSString *parinkta = [[NSUserDefaults standardUserDefaults] stringForKey:zona];
        UIView *tempView = [[UIView alloc] init];
        UILabel *tempLabel = [[UILabel alloc] init];
        tempLabel.frame = _view1Label.frame;
        tempLabel.text = _view1Label.text;
        [tempView addSubview: tempLabel];
        tempView.frame = _view1.frame;
        _view1Label.text = parinkta;
        _view1.hidden = false;
        CGRect newrect = CGRectMake(_view1.frame.origin.x, _view1.frame.origin.y + (80 * i), _view1.frame.size.width, _view1.frame.size.height);
        _view1.frame = newrect;
        [Info addObject:tempView];
    }
于 2012-12-04T09:16:14.010 に答える
0

ビューを表示したい場合nは、ビューn時間を作成する必要があります。最初のforループ内では、単一のビューを複数の場所に配置することはできません。

于 2012-12-04T08:53:52.153 に答える