だから、私は明らかに同じラベルを何度も繰り返しています。私はIBで繋がったIBOutlet for UILabelを持っています。私はそれが私のUIScrollViewのために欲しいポジションなので、それをしました。私はまた、私のScrollViewの各ページに新しいラベルが欲しいが、私はそれを行う方法を理解することはできません。UIScrollView addSubView:同じUILabelインスタンスの再追加をどうやって防ぐのですか?
これを達成するための提案はありますか?あなたは何度も同じUILabelインスタンスを再追加する/
AnotherMadeUpViewController.h
#import <UIKit/UIKit.h>
@interface AnotherMadeUpViewController : UIViewController<UIScrollViewDelegate>
{
IBOutlet UIPageControl *pageControl;
IBOutlet UIScrollView *scroller;
IBOutlet UILabel *label;
}
@property (nonatomic,retain)IBOutlet UIPageControl *pageControl;
@property (nonatomic,retain)IBOutlet UIScrollView *scroller;
@property (nonatomic,retain)IBOutlet UILabel *label;
-(IBAction)clickPageControl:(id)sender;
@end
AnotherMadeUpViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
scroller.delegate=self;
scroller.pagingEnabled=YES;
scroller.directionalLockEnabled=YES;
scroller.showsHorizontalScrollIndicator=NO;
scroller.showsVerticalScrollIndicator=NO;
scroller.contentSize=CGSizeMake(pageControl.numberOfPages*scroller.frame.size.width, scroller.frame.size.height);
CGFloat labelOriginX = label.frame.origin.x;
CGFloat labelOriginY = label.frame.origin.y;
CGFloat scrollWidth = 0;
int pageNumber = 0;
for (int i=0; i<3; i++)
{
CGRect rect = label.frame;
rect.size.height = label.frame.size.height;
rect.size.width = label.frame.size.width;
rect.origin.x = labelOriginX + scrollWidth;
rect.origin.y = labelOriginY;
label.frame = rect;
label.text = [NSString stringWithFormat:@"%d", pageNumber];
label.textColor = [UIColor redColor];
[scroller addSubview:label];
pageNumber++;
scrollWidth += scroller.frame.size.width;
}
pageControl.numberOfPages=3;
pageControl.currentPage=0;
[self.view addSubview:scroller];
}
で作成したパターン画像に設定してみてください。Thanks Xissburg。私はそれが起こっていないことを望んでいた。 Interface Builder経由でコンセントを使用している場合は、新しいラベルを作成できますか?ラベルを付けることができないので、できますか? – NateHill
通常、ビューを動的に作成するときは、プログラムで行う必要があります。とにかく、IBで8つのラベルをすべて作成し、それぞれをIBOutletリファレンスにリンクし、各ラベルフレームを個別に設定することもできます。 – xissburg
さて、私は先に進んでそれをしました:-)もう一度感謝Xissburg – NateHill