0

UIScrollView と追加された UIViewControllers に本当に奇妙な問題があります。ページングのために UIViewControllers が UIScrollView に追加されると、UIViewController は追加されたすべてのオブジェクトをドロップするように見えます。

プロジェクトには、2 つのビューを持つストーリーボードがあり、対応するコードに正しく接続されています。

コードが追加された UIViewController を正しい X に移動しないことはわかっていますが、このテストでは UIViewController を 1 つだけ追加しているので問題ありません。

これはスクロール コード .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)

誰が間違っているかを見ることができますか?

4

1 に答える 1