IOS View传统的价值观之间

时间:2023-03-09 13:36:47
IOS View传统的价值观之间

1、采用NSUserDefaults通过值,这样的方法不限于传送少量数据的:

比方你要传一个float的值。在须要传的时候用

[[NSUserDefaults standardUserDefaults] setFloat:float forKey::@"float"]

接收值的时候用

[[NSUserDefaults standardUserDefaults] floatForKey:@"float"]

2、NSNotificationCenter来传值

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

{

    UITouch * touch = [touches anyObject];

    CGPoint point = [touch locationInView:self];

    CGRect roundRect = [self rectNeedRefreshFromThisPoint:point];

    mLastPoint = CGPointMake(-1, -1);

   

    NSLog(@"%s: point(%f,%f)", __FUNCTION__, point.x, point.y);

   

    [self addToCurrentLineWithPoint:point.x y:point.y];

    [self endLine];

    [self setNeedsDisplayInRect:roundRect];

   

    NSNumber *pointX = [NSNumber numberWithFloat:point.x];

    NSNumber *pointY = [NSNumber numberWithFloat:point.y];

    NSDictionary *pointDict = [NSDictionary dictionaryWithObjectsAndKeys:pointX,@"pointX",pointY,@"pointY", nil];

    [[NSNotificationCenter defaultCenter]postNotificationName:@"passTouchedEndPointMsg"object:self userInfo:pointDict];

   

}

在消息中心的函数:

[[NSNotificationCenter defaultCenter] addObserver:self

                                                 selector:@selector(getTouchedPoint:)

                                                     name:@"passTouchedEndPointMsg"

                                                   object:nil];

- (void) getTouchedPoint:(NSNotification *)noti

{

    NSDictionary *pointDict = [noti userInfo];

    touchedEndPointX = [[pointDict objectForKey:@"pointX"] floatValue];

    touchedEndPointY = [[pointDict objectForKey:@"pointY"] floatValue];

    NSLog(@"%f:%f",touchedEndPointX,touchedEndPointY);

}

用消息来传參数有以下几点说法:object指的是发送者、在poseter端的userInfo里面能够存放要传的參数,必须为NSDictionary类型。在center端获取这个dictionary类型用:[notification userInfo];要得到

版权声明:本文博主原创文章,博客,未经同意不得转载。