iOS의 인터페이스 전송(알림, 속성, 프로토콜, NSUserDefaults, KVC)
19118 단어 iosKVC인터페이스 전송 값프로토콜 전송 값알림 전송 값
// NSNotificationCenter,
- (IBAction)changeColorAction2:(id)sender {
UIColor *color = [UIColor greenColor];
[[NSNotificationCenter defaultCenter] postNotificationName:@"ChangeColorKey" object:color];
[[self navigationController] popViewControllerAnimated:YES];
}
//
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeColor:) name:@"ChangeColorKey" object:nil];
// NSNotificationCenter
- (void)changeColor:(NSNotification *)notification{
if([notification object] != nil)
{
UIColor *color = [notification object];
[self.view setBackgroundColor:color];
}
}
- (void)dealloc {
//
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"ChangeColorKey" object:nil];
}
참고: 주의 매개변수 notification Observer는 삭제할 관찰자이므로 nil로 설정할 수 없습니다.
프로토콜 리셋 A 페이지push에서 B 페이지로 이동합니다. 만약에 B 페이지의 정보가 A 페이지로 리셋(리셋)하려면 에이전트 리셋을 사용합니다. 그 중에서 B는 프로토콜과 성명 에이전트를 정의하고 A는 에이전트를 확인하고 실현합니다. A는 B의 에이전트로 합니다.
@protocol ViewControllerAdelegate
-(void)changeBgColorFromCtrlA:(ViewControllerA *)aView withColor:(UIColor *)color;
@end
@interface ViewControllerA : UIViewController
@property( assign, nonatomic ) id< ViewControllerAdelegate > delegate;
@end
@implementation ViewControllerA
@synthesize delegate;
// Delegate
-(IBAction)changeColorAction:(id)sender{
[delegate changeBgColorFromCtrlA:self withColor:[UIColor grayColor]];
[[self navigationController] popViewControllerAnimated:YES];
}
@interface ViewControllerB : UIViewController<ViewControllerAdelegate>
@end
ViewControllerA *_ViewControllerA = [stryBoard instantiateViewControllerWithIdentifier:@"ViewControllerA"];
_ViewControllerA.delegate = self;
// Delegate
-(void)changeBgColorFromCtrlA:(ViewControllerA *)aView withColor:(UIColor *)color{
[self.view setBackgroundColor:color];
}
개인이 쓴 '알림 전송 값' 과 '프로토콜 전송 값' 의 모든 demo를 동봉합니다
// Created by Ydw on 16-03-17.
// Copyright (c) 2016 com. All rights reserved.
//
#import <UIKit/UIKit.h>
@class ViewControllerA;
@protocol ViewControllerAdelegate
-(void)changeBgColorFromCtrlA:(ViewControllerA *)aView withColor:(UIColor *)color;
@end
@interface ViewControllerA : UIViewController
@property( assign, nonatomic ) id< ViewControllerAdelegate > delegate;
-(IBAction)changeColorAction:(id)sender;
-(IBAction)changeColorAction2:(id)sender;
@end
// Created by Ydw on 16-03-17.
// Copyright (c) 2016 com. All rights reserved.
//
#import "ViewControllerA.h"
#import "ViewControllerB.h"
@interface ViewControllerA ()
@end
@implementation ViewControllerA
@synthesize delegate;
- (void)viewDidLoad
{
[super viewDidLoad];
self.title = @"Ctrl A";
}
// Delegate
- (IBAction)changeColorAction:(id)sender {
[delegate changeBgColorFromCtrlA:self withColor:[UIColor grayColor]];
[[self navigationController] popViewControllerAnimated:YES];
}
// NSNotificationCenter,
- (IBAction)changeColorAction2:(id)sender {
UIColor *color = [UIColor greenColor];
[[NSNotificationCenter defaultCenter] postNotificationName:@"ChangeColorKey" object:color];
[[self navigationController] popViewControllerAnimated:YES];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
// Created by Ydw on 16-03-17.
// Copyright (c) 2016 com. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "ViewControllerA.h"
@interface ViewControllerB : UIViewController<ViewControllerAdelegate>
@end
// Created by Ydw on 16-03-17.
// Copyright (c) 2016 com. All rights reserved.
//
#import "ViewControllerB.h"
@implementation ViewControllerB
- (void)viewDidLoad
{
[super viewDidLoad];
self.title = @"Ctrl B";
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Go CtrlA" style:UIBarButtonItemStylePlain target:self action:@selector(go)];
//
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeColor:) name:@"ChangeColorKey" object:nil];
}
-(void)go {
UIStoryboard *stryBoard=[UIStoryboard storyboardWithName:@"Main" bundle:nil];
ViewControllerA *_ViewControllerA = [stryBoard instantiateViewControllerWithIdentifier:@"ViewControllerA"];
_ViewControllerA.delegate = self;
[[self navigationController] pushViewController:_ViewControllerA animated:YES];
_ViewControllerA = nil;
}
// Delegate
-(void)changeBgColorFromCtrlA:(ViewControllerA *)aView withColor:(UIColor *)color{
[self.view setBackgroundColor:color];
}
// NSNotificationCenter
- (void)changeColor:(NSNotification *)notification{
if([notification object] != nil)
{
UIColor *color = [notification object];
[self.view setBackgroundColor:color];
}
}
- (void)dealloc{
//
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"ChangeColorKey" object:nil];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
속성 전송속성 전송은 A 페이지에 있는 정보를 속성을 통해 B 페이지로 전달하는 데 사용됩니다.B 페이지는 A 페이지에서 직접 속성 값을 지정하여 A 페이지의 값을 B 페이지로 전송하는 속성을 정의합니다.(상대적으로 가장 간단한 전가는 구체적으로 설명하지 않는다)
@property(nonatomic,retain) NSString *firstValue;//
- (void)buttonAction:(UIButton *)button {
SecondViewController *second = [[SecondViewController alloc]init];
second.firstValue = _txtFiled.text;
[self.navigationController pushViewController:second animated:YES];
}
[_txtFiled setText:_firstValue];// ,firstValue
NSUserDefaults 1, NSUserDefaults는 로컬의 일부 경량급 데이터를 기록하는 단일 클래스입니다.userDefaults 대상을 통해 데이터를 NSUserDefaults의plist 파일에 저장합니다. 이 파일은 샌드박스에 있는/Library/Preferences/NSUserDefaults 파일입니다.plist 이 위치에서2. NSUserDefaults가 지원하는 데이터 형식은 NSNumber(Integer, Float, Double), NSString, NSDate, NSArray, NSDictionary, BOOL 유형이다.3. NSUserDefaults는 로컬 데이터의 지속화의 일종으로 투기적으로 데이터 전송을 할 수 있다. NSUserDefaults에 DefaultsKey를 설정하면 모든 페이지에서DefaultsKey를 통해 값을 얻을 수 있다.간단한 예를 들어 다음과 같이 설명하십시오.
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *rootArray = nil;
if ([defaults objectForKey:DefaultsKey]) {
rootArray = [NSMutableArray arrayWithArray:[defaults objectForKey:DefaultsKey]];
}else {
rootArray = [NSMutableArray array];
}
NSDictionary *infoDictionary = @{NameKey:@"Ydw",PhoneKey: @"1314520"};
[rootArray addObject:infoDict];
[defaults setObject:rootArray forKey:DefaultsKey];
[defaults synchronize];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *rootArray = [defaults objectForKey:DefaultsKey];
if (rootArray && rootArray.count > 0) {
NSLog(@"%@", rootArray);
}else {
NSLog(@" !");
}
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults removeObjectForKey:DefaultsKey];
[defaults synchronize];
NSLog(@" !");
KVC KVC는 키 값 인코딩의 약자입니다.iOS에서는 속성의 이름(즉 Key)을 사용하여 객체에 간접적으로 액세스하는 방법을 제공합니다.실제적으로 클래스 정의를 통해 우리는 클래스의 각종 속성을 볼 수 있다. 그러면 속성의 이름을 사용하면 클래스가 실례화된 대상의 이 속성 값에 접근할 수 있다.이 방법은 Getter/setter 방법을 통해 대상의 속성에 접근하지 않을 수 있습니다.KVC는 NSArray/NSSet 등에서 지원됩니다.
@interface myInformation : NSObject {
NSString *_name;
int _age;
int _height;
int _weight;
}
@end
@interface myViewController : UIViewController
@property (nonatomic, retain) myInformation *information;
@end
- (void)useKVC {
information = [[myInformation alloc] init];
NSLog(@"information's init height = %@", [information valueForKey:@"height"]);
[information setValue:[NSNumber numberWithInt:168] forKey:@"height"];
NSLog(@"information's height = %@", [information valueForKey:@"height"]);
}
- (id)valueForKey:(NSString *)key; - (void)setValue:(id)value forKey:(NSString *)key;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swift의 패스트 패스Objective-C를 대체하기 위해 만들어졌지만 Xcode는 Objective-C 런타임 라이브러리를 사용하기 때문에 Swift와 함께 C, C++ 및 Objective-C를 컴파일할 수 있습니다. Xcode는 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.