0

我正在开发一个 e-pub 应用程序,并希望使用 UIScrollView 来显示多个页面。但我发现通过查看断点调用 viewDidLoad 后,scrollView 变量为空。编码:

#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");
}
4

2 回答 2

2

为 nil 的 IBOutlets 几乎总是由 IB(Interface Builder)中的出口链接断开引起的。在IB中打开VC,选择“连接检查器”,然后点击滚动视图。查看它是否连接到 VC 中的 IBOutlet。如果没有,从滚动视图控制拖动到“文件的所有者”并选择“scrollView”插座进行连接。

于 2013-09-07T17:47:38.017 回答
1

首先,确保您的 xib 文件滚动视图出口已连接到scrollView您的 .h 文件中。

还有一些关于您的代码的评论:

  1. 使您的IBOutlet属性weak而不是strong. 如果你不这样做,你可能会遇到问题。

  2. @synthesize如果您使用的是最新版本的 Xcode 并针对 iO 5+,则不需要这些语句。

编辑:

查看您的PagedScrollViewController.xib文件并检查是否scrollView已连接参考插座。请参阅此屏幕截图,了解如何在 Interface Builder 中执行此操作 - 就像view显示的插座一样。@duncan-c 也很好地描述了如何连接它。

在此处输入图像描述

于 2013-09-07T17:46:06.190 回答