你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> IOS View之間傳值

IOS View之間傳值

編輯:IOS開發綜合

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];來獲取

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved