在基本视图控制器中管理iboutlet

时间:2013-01-09 17:40:47

标签: ios cocoa-touch

我的应用的每个UIViewController都使用UITextField委托,例如:

- (void)textFieldDidBeginEditing:(UITextField*)textField {

    self.responder = textField;

}

- (BOOL)textFieldShouldReturn:(UITextField*)textField {

double elementYPosition = self.responder.frame.origin.y;
double elementHeight = self.responder.frame.size.height;
double scrollYPosition = self.scrollView.contentOffset.y;
/* some logic */

}

现在我正在尝试创建一个基本视图控制器,所以我可以继承使用它,重用这些方法。基本视图控制器中的responder属性工作得很好,因为UITextField委托设置了它的值,但是scrollview是一个IBOutlet,我真的不确定如何设计这个基类:

#import "ViewControllerBase.h"

@interface ViewControllerBase ()

@property (weak, nonatomic) UIView* responder;
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView; /* ??? */

@end

@implementation ViewControllerBase

-- methods

@end

1 个答案:

答案 0 :(得分:0)

在子类标题中:

@property (weak, nonatomic) UIScrollView *scrollView;

在子类加载方法中:

self.scrollView = (UIScrollView *)self.view.subviews[0];

但它只能起作用,因为我的视图控制器总是采用以下格式:

UIViewController (self)
  UIView (self.view)
    UIScrollView (self.view.subviews[0])
      UILabel
      UIElement
    UIElement
    UIElement