首先,我想向您展示我的代码/故事板:

这是我的故事板:我有一个小 UISlider 和一个 UIView。UIView 是一个自定义视图,他的类是“SquareView”。这是代码:
SquareView.h
#import <UIKit/UIKit.h>
    @class SquareView;
    @protocol SquareViewDelegate <NSObject>
    -(int)giveMeTheNumbersOfSquare:(SquareView *)squareView;
    @end
    @interface SquareView : UIView
    @property (nonatomic , weak) IBOutlet id<SquareViewDelegate> delegate;
    @end
和SquareView.m
#import "SquareView.h"
@implementation SquareView
@synthesize delegate;
- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
    }
    return self;
}
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
    int numberOfSquare = [delegate giveMeTheNumbersOfSquare:self];
    NSLog(@"Value of numberOfSquare in drawRect---> %d" ,numberOfSquare);
    //numberOfSquare = 20;
    for (int i=0; i<numberOfSquare; i++) {
        float x = arc4random() % (int)self.frame.size.width - 20;
        float y = arc4random() % (int)self.frame.size.width - 20;
        UIRectFill(CGRectMake(x, y, 20.0, 20.0));
       // NSLog(@"X---> %f" ,x);
        //NSLog(@"Y---> %f" ,y);
        [self setNeedsDisplay];
    }
    // Drawing code
}
@end
现在 ViewController... ViewController 是 SquareView 的代表。
视图控制器.h
#import <UIKit/UIKit.h>
#import "SquareView.h"
@interface TestViewController : UIViewController <SquareViewDelegate>
@property (weak) IBOutlet SquareView *squareView;
@property(weak) IBOutlet UISlider *slider;
-(IBAction)changeSquareNumbers:(id)sender;
@end
和ViewController.m
#import "TestViewController.h"
@interface TestViewController ()
{
    int _squareCount;
}
@end
@implementation TestViewController
@synthesize squareView = _squareView;
@synthesize slider = _slider;
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}
-(void)awakeFromNib
{
    [_squareView setDelegate:self];
    _squareCount = 50;
    [self.squareView setNeedsDisplay];
}
/********* Delegate Method *********/
-(int)giveMeTheNumbersOfSquare:(SquareView *)squareView
{
    //return _squareCount;
    NSLog(@"Value of _squareCount in giveMeTheNumberOfSquare ---> %d" ,_squareCount);
    return _squareCount;
}
-(IBAction)changeSquareNumbers:(UISlider *)sender
{
    NSLog(@"Value of slider in changeSquareNumbers --> %f" ,[sender value]]);
    _squareCount = (int)[sender value];
    NSLog(@"Value of _sqareCount ---> %d" ,_squareCount);
    [self.squareView setNeedsDisplay];
}
现在...在 SquareView.m 文件中,在 drawRect 函数中,我不知道为什么程序从不调用“giveMetheNumbersOfSquare”函数。drawRect 中的“numberOfSquare”保持为 0!!!我不明白为什么程序永远不要进入“giveMeTheNumberOfSquare”函数!!
谢谢!!