【问题标题】:How to set up a subclass of UIScrollView, and connect it in Interface Builder如何设置 UIScrollView 的子类,并在 Interface Builder 中连接
【发布时间】:2026-01-12 16:05:02
【问题描述】:

首先,我从视图控制器中的以下代码开始,但出于对我有用的原因,我需要将以下代码放在单独的类中。所以我创建了一个我在下面发布的 CustomView 类。

此时我是否可以在我的视图控制器中创建此类的实例,创建 IBOutlet 并将其连接到界面构建器中的 UIScrollView(或某种视图)并获得相同的行为,我该怎么做?

customView.m

#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>

@interface CustomView : UIScrollView <UIScrollViewDelegate> {

    UIScrollView    *scrollView;
    UIImageView     *imageView;

}

@property (nonatomic, retain) IBOutlet UIScrollView     *scrollView;
@property (nonatomic, retain) UIImageView               *imageView;

customView.m

#import <UIKit/UIKit.h>

@implementation CustomView
@synthesize scrollView, imageView;


    - (id)init {

        if (self = [super init]) {

            // Initialization code
            UIImageView *temp = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"myImage.png"]];
            self.imageView = temp;
            [temp release];

            scrollView.contentSize = CGSizeMake(imageView.frame.size.width, imageView.frame.size.height);
            //Other Scroll View Properties
            scrollView.delegate = self;
            [scrollView addSubview:imageView];
        }

        return self;
    }


    - (void)dealloc {
        [scrollView release];
        [imageView release];
        [super dealloc];
    }


    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

        //Perform an action

    }

    @end

【问题讨论】:

  • 第二个 UIScrollView 是怎么回事?

标签: iphone iphone-sdk-3.0 ios4


【解决方案1】:

您可以很容易地在 IB 中创建CustomView 的实例。只需拖出UIScrollView 并根据需要放置它。然后打开 Identity Inspector (cmd+4) 并将类更改为CustomView。然后,您可以像往常一样将其连接到插座。

【讨论】:

  • 那么我需要在我的视图控制器中创建这个类的一个实例,然后在 viewDidLoad 方法中分配和初始化吗?
  • 您可以像对待任何其他 IB 网点一样对待它。因此,将 ivar 添加到您的控制器中,添加带有 IBOutlet 修饰符的 @property,@synthesize 它,在 viewDidUnloaddealloc 中释放它,最后在 IB 中连接出口。然后,当viewDidLoad 方法在您的控制器中触发时,此类的实例将被完全实例化并添加到控制器的视图中。所有这些都在后台发生,您无需自己分配初始化。
  • 我已经做到了,但它似乎没有将我的视图加载到滚动视图中
【解决方案2】:

你真的想在你的 UIScrollView 中添加一个 UIScrollView 吗?

您的 scrollView 实例在您的 init 方法中应该为 nil,因此访问它不会按预期工作。

我不确定整个构造/层次结构是否是您想要的...

【讨论】:

  • 老实说,我正在尝试创建一个自定义控件,该控件使用 UIScrollView 从左向右滑动,相信我它工作得很好。唯一的事情是我想为我的控件创建一个自定义类,以便我能够在界面构建器中非常连接它并在隐藏中执行细节
  • 那么您可能应该要么从 UIScrollView 继承从常规 UIView 继承并包含一个,但不能同时包含两者。