У меня очень странная проблема с UIScrollView и добавлены UIViewControllers. Похоже, что когда UIViewControllers добавлены в UIScrollView для подкачки, UIViewController оставляет все свои добавленные объекты.UIScrollView с удаленными объектами IUViewController
В проекте у меня есть раскадровка с двумя видами, и они правильно подключены к соответствующему коду.
Я знаю, что код не перемещает добавленный UIViewController в правильный X, но в этом тесте я добавляю только один UIViewController, поэтому это не имеет значения.
Это код прокрутки .h:
#import <UIKit/UIKit.h>
#import "TestViewController.h"
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;
@property (strong, nonatomic) NSMutableArray *scrollController;
@end
Это код прокрутки .m:
#import "ViewController.h"
@interface ViewController()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.scrollController = [[NSMutableArray alloc] init];
}
- (void)viewDidAppear:(BOOL)animated {
//just adding two controllers
TestViewController *first = [[TestViewController alloc] init];
[self.scrollView addSubview:first.view];
[self.scrollController addObject:first];
self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * self.scrollController.count, self.scrollView.frame.size.height);
self.pageControl.numberOfPages = [self.scrollController count];
}
- (void)scrollViewDidScroll:(UIScrollView *)sender {
// Update the page when more than 50% of the previous/next page is visible
CGFloat pageWidth = self.scrollView.frame.size.width;
int page = floor((self.scrollView.contentOffset.x - pageWidth/2)/pageWidth) + 1;
self.pageControl.currentPage = page;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
Это ViewController код .h:
#import <UIKit/UIKit.h>
@interface TestViewController : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *lblMsg;
@end
Это - код viewcontroller .m:
#import "TestViewController.h"
@interface TestViewController()
@end
@implementation TestViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
NSLog(@"Label: %@", self.lblMsg);
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
Выход в сруба:
Label: (null)
Любой сможет увидеть, что им делать неправильно?
Конечно .. Я полностью пропустил эту часть. Он работает с i теперь с идентификатором раскадровки и 'TestViewController * first = [self.storyboard instantiateViewControllerWithIdentifier: identifier];'. Спасибо за помощь –