Я получил этот код из прокрутки примера проекта Apple:
@synthesize scrollView1, scrollView2;
const CGFloat kScrollObjHeight = 467.0;
const CGFloat kScrollObjWidth = 320.0;
const NSUInteger kNumImages = 6;
- (void)layoutScrollImages
{
UIImageView *view = nil;
NSArray *subviews = [scrollView1 subviews];
// reposition all image subviews in a horizontal serial fashion
CGFloat curXLoc = 0;
for (view in subviews)
{
if ([view isKindOfClass:[UIImageView class]] && view.tag > 0)
{
CGRect frame = view.frame;
frame.origin = CGPointMake(curXLoc, 0);
view.frame = frame;
curXLoc += (kScrollObjWidth);
}
}
// set the content size so it can be scrollable
[scrollView1 setContentSize:CGSizeMake((kNumImages * kScrollObjWidth), [scrollView1 bounds].size.height)];
}
Я пытался изменить это, чтобы загрузить подпредставления вместо изображений, но это не работает.Я думаю, что я каким-то образом заменяю представления вместо того, чтобы добавлять их?Мне нужно загрузить представления из отдельных файлов XIB и прокручивать их влево-вправо (каждый из них содержит панель кнопок, ведущих на разные уровни в моей игре).Так что я делаю не так?Почему это не работает?Он показывает только вторую панель, и всякий раз, когда я нажимаю кнопку, он падает с SIGABRT.
#import "LevelSelectButtons.h"
@implementation LevelSelectButtons
@synthesize levelScroll;
const int kScrollObjHeight = 400;
const int kScrollObjWidth = 320;
const NSUInteger kNumCategories = 5;
- (void)layoutScrollScreens {
UIImageView *view = nil;
NSArray *subviews = [levelScroll subviews];
// reposition all image subviews in a horizontal serial fashion
CGFloat curXLoc = 0;
for (view in subviews) {
if ([view isKindOfClass:[UIImageView class]] && view.tag > 0) {
CGRect frame = view.frame;
frame.origin = CGPointMake(curXLoc, 0);
view.frame = frame;
curXLoc += (kScrollObjWidth);
}
}
// set the content size so it can be scrollable
[levelScroll setContentSize:CGSizeMake((kNumCategories * kScrollObjWidth), [levelScroll bounds].size.height)];
}
- (void)viewDidLoad {
[levelScroll setScrollEnabled:YES];
CGFloat width = 640; //kScrollObjWidth*kNumCategories;
CGFloat height = 400;
[levelScroll setContentSize:CGSizeMake(width, height)];
[self.view addSubview:levelScroll];
levelScroll.pagingEnabled = YES;
levelScroll.indicatorStyle = UIScrollViewIndicatorStyleWhite;
levelScroll.pagingEnabled = YES;
/// LEVELS 1 ///
NSUInteger viewNum = 0;
CGRect catViewFrame = CGRectMake(0, 0, kScrollObjWidth, kScrollObjHeight);
UIView *levels1view = [[UIView alloc] initWithFrame:catViewFrame];
NSArray *array1 = [[NSBundle mainBundle] loadNibNamed:@"Levels1" owner:self options:nil];
levels1view = [array1 objectAtIndex:0];
levels1view.tag = viewNum;
[self.levelScroll addSubview:levels1view];
/// LEVELS 2 ///
viewNum = 1;
catViewFrame = CGRectMake(320, 0, kScrollObjWidth, kScrollObjHeight);
UIView *levels2view = [[UIView alloc] initWithFrame:catViewFrame];
NSArray * array2= [[NSBundle mainBundle] loadNibNamed:@"Levels2" owner:self options:nil];
levels2view = [array2 objectAtIndex:0];
levels2view.tag = viewNum;
[self.levelScroll addSubview:levels2view];
[self layoutScrollScreens];
[super viewDidLoad];
}
Это строка, где появляется SIGABRT:
int retVal = UIApplicationMain(argc, argv, nil, nil);