使用 'Delegation' 在两个视图控制器之间传递数据:Objective-C
Pass Data between two view controllers using 'Delegation' : Objective-C
我正在实施一个库 (.a),我想将通知计数从库发送到应用程序,以便它们可以在 UI 通知计数中显示。我希望他们实施唯一的方法,
-(void)updateCount:(int)count{
NSLog(@"count *d", count);
}
如何从我的图书馆连续发送计数,以便他们可以在 updateCount 方法中使用它来显示。
我搜索并了解了回调函数。我不知道如何实施它们。有没有其他方法可以做到这一点。
您有 3 个选项
- 代表
- 通知
- 块,也称为回调
我觉得你想要的是Delegate
假设您将此文件作为 lib
TestLib.h
#import <Foundation/Foundation.h>
@protocol TestLibDelegate<NSObject>
-(void)updateCount:(int)count;
@end
@interface TestLib : NSObject
@property(weak,nonatomic)id<TestLibDelegate> delegate;
-(void)startUpdatingCount;
@end
TestLib.m
#import "TestLib.h"
@implementation TestLib
-(void)startUpdatingCount{
int count = 0;//Create count
if ([self.delegate respondsToSelector:@selector(updateCount:)]) {
[self.delegate updateCount:count];
}
}
@end
然后在class你要用
#import "ViewController.h"
#import "TestLib.h"
@interface ViewController ()<TestLibDelegate>
@property (strong,nonatomic)TestLib * lib;
@end
@implementation ViewController
-(void)viewDidLoad{
self.lib = [[TestLib alloc] init];
self.lib.delegate = self;
[self.lib startUpdatingCount];
}
-(void)updateCount:(int)count{
NSLog(@"%d",count);
}
@end
我正在实施一个库 (.a),我想将通知计数从库发送到应用程序,以便它们可以在 UI 通知计数中显示。我希望他们实施唯一的方法,
-(void)updateCount:(int)count{
NSLog(@"count *d", count);
}
如何从我的图书馆连续发送计数,以便他们可以在 updateCount 方法中使用它来显示。 我搜索并了解了回调函数。我不知道如何实施它们。有没有其他方法可以做到这一点。
您有 3 个选项
- 代表
- 通知
- 块,也称为回调
我觉得你想要的是Delegate
假设您将此文件作为 lib
TestLib.h
#import <Foundation/Foundation.h>
@protocol TestLibDelegate<NSObject>
-(void)updateCount:(int)count;
@end
@interface TestLib : NSObject
@property(weak,nonatomic)id<TestLibDelegate> delegate;
-(void)startUpdatingCount;
@end
TestLib.m
#import "TestLib.h"
@implementation TestLib
-(void)startUpdatingCount{
int count = 0;//Create count
if ([self.delegate respondsToSelector:@selector(updateCount:)]) {
[self.delegate updateCount:count];
}
}
@end
然后在class你要用
#import "ViewController.h"
#import "TestLib.h"
@interface ViewController ()<TestLibDelegate>
@property (strong,nonatomic)TestLib * lib;
@end
@implementation ViewController
-(void)viewDidLoad{
self.lib = [[TestLib alloc] init];
self.lib.delegate = self;
[self.lib startUpdatingCount];
}
-(void)updateCount:(int)count{
NSLog(@"%d",count);
}
@end