我正在开发一个电子酒吧应用程序,并希望使用UIScrollView来显示多个页面。但是我发现通过查看到断点来调用viewDidLoad后,scrollView变量为null。代码:
#import <UIKit/UIKit.h>
@interface PagedScrollViewController : UIViewController <UIScrollViewDelegate>
@property (nonatomic, strong) IBOutlet UIScrollView *scrollView;
@property (nonatomic, strong) IBOutlet UIPageControl *pageControl;
@end
.m文件:
@implementation PagedScrollViewController
@synthesize scrollView = _scrollView;
@synthesize pageControl = _pageControl;
@synthesize pageImages = _pageImages;
@synthesize pageViews = _pageViews;
- (void)viewDidLoad {
NSLog(@"paged view did load");
[super viewDidLoad];
self.title = @"Paged";
我发现在viewDidload之后scrollView仍然设置为null。 在上一个视图中,我使用下面的代码切换到上面的视图:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
NSLog(@"touch pressed");
PagedScrollViewController *indexView = [[PagedScrollViewController alloc] init];
[self.navigationController pushViewController:indexView animated:YES];
NSLog(@"touch pressed 2");
}
答案 0 :(得分:2)
IB的IBOutlets几乎总是由IB(Interface Builder)中的断开链接引起。在IB中打开VC,选择“连接检查器”,然后单击滚动视图。查看它是否已连接到VC中的IBOutlet。如果没有,控制 - 从滚动视图拖动到“文件所有者”并选择“scrollView”插座进行连接。
答案 1 :(得分:1)
首先,确保您的.ib文件滚动视图插座已连接到.h文件中的scrollView
。
还有一些关于您的代码的评论:
制作IBOutlet
媒体资源weak
而不是strong
。如果你不这样做,你可能会遇到问题。
如果您使用最新版本的Xcode并定位到iO 5 +,则不需要@synthesize
语句。
编辑:
查看您的PagedScrollViewController.xib
文件,检查scrollView
的引用插座是否已连接。请参阅界面生成器中的操作截图 - 如所示的view
插座。 @ duncan-c给出了如何连接它的很好的描述。