Я довольно новичок в разработке iOS и, следовательно, новичок в концепции storyboard
. Поскольку это, кажется, «новая вещь», каждый должен использовать, я думал, что могу попробовать.Создание и загрузка представлений с помощью раскадровки
У меня есть проект, созданный с помощью файла Foo.xib
.
xib
файл имеет несколько view
объектов в комплекте.
Тогда у меня есть класс Foo.h
и Foo.m
класс с следующим содержанием:
Foo.h
#import <UIKit/UIKit.h>
@interface Foo : UIView
@property (strong, nonatomic) IBOutlet UIView *view01;
@property (strong, nonatomic) IBOutlet UIView *view02;
@property (strong, nonatomic) IBOutlet UIView *view03;
@property (strong, nonatomic) IBOutlet UIView *view04;
- (NSUInteger)viewCount;
@end
Foo.m
#import "Foo.h"
@interface Foo()
@property (nonatomic, strong) NSArray *views;
@end
@implementation Foo
- (id)init {
self = [super init];
if (self) {
self.views = [[NSBundle mainBundle] loadNibNamed:@"Foo" owner:self options:nil];
}
return self;
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
- (NSUInteger)viewCount {
return [self.views count];
}
@end
В моей ViewController
я бы затем загрузить все мнения и сделать его прокручиваемый, например:
#import "ViewController.h"
#import "Foo.h"
@interface ViewController()
@property (nonatomic, strong) UIScrollView *scrollView;
@property (nonatomic, strong) Foo *views;
@end
@implementation ViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.views = [[Foo alloc] init];
CGSize fooSize = self.views.view01.bounds.size;
NSUInteger viewCount = [self.views viewCount];
self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, fooSize.width, fooSize.height)];
[self.scrollView setContentSize:CGSizeMake(viewCount*fooSize.width, fooSize.height)];
[self.scrollView setBounces:YES];
[self.scrollView setPagingEnabled:YES];
self.scrollView.delegate = self;
NSArray *views = @[ self.views.view01,
self.views.view02,
self.views.view03,
self.views.view04
];
for (int i=0; i<viewCount; i++) {
UIView *curView = views[i];
CGRect frame = curView.frame;
frame.origin.x = i*fooSize.width;
frame.origin.y = 0;
curView.frame = frame;
[self.scrollView addSubview:curView];
}
[self.view addSubview:self.scrollView];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
Однако у меня нет подсказки, как реализовать это с помощью раскадровки. Мне кажется, что я должен иметь NavigationController
, который затем связан с Master View Controller
. И теперь мне нужно будет добавить новый ViewController
для каждого вида? Или есть способ включить все представления в один ViewController
, как я сделал «старый способ»?
не забывайте поднимать/отмечать как верхний ответ, если мой ответ был решен ваш вопрос. в противном случае оставляют некоторые дополнительные комментарии/вопросы –