比如A,B兩個(gè)view,值從A傳到B。在B里面寫A *av = [[A alloc]init];[av setDelegate:self]和在A里面寫B(tài) *bv = [[B alloc]init];[self setDelegate:bv];這句setDelegate要放哪里呢?viewDidLoad?沒有報(bào)錯(cuò),但是就是傳值不成功。能給我一點(diǎn)提示嗎?代碼#import <Foundation/Foundation.h>@protocol delegate <NSObject>-(void)passString:(NSString *)string;@end#import <UIKit/UIKit.h>#import "labelViewController.h"#import "delegate.h"@interface buttonViewController : UIViewController @property (weak, nonatomic) IBOutlet UIButton *button;@property (weak,nonatomic) id <delegate> delegate;
- (IBAction)buttonPress:(UIButton *)sender;@end#import "buttonViewController.h"@interface buttonViewController ()@end@implementation buttonViewController- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization
} return self;
}
- (void)viewDidLoad
{
labelViewController *lv = [[labelViewController alloc]init];
[self setDelegate:lv];
[super viewDidLoad]; // Do any additional setup after loading the view.}
- (IBAction)buttonPress:(UIButton *)sender {
[self.delegate passString:sender.currentTitle];
[self performSegueWithIdentifier:@"push" sender:self];
}@end#import <UIKit/UIKit.h>#import "delegate.h"@interface labelViewController : UIViewController <delegate>@property (weak, nonatomic) IBOutlet UILabel *label;@end#import "labelViewController.h"@interface labelViewController ()@end@implementation labelViewController- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization
} return self;
}
- (void)viewDidLoad
{
[super viewDidLoad]; // Do any additional setup after loading the view.}
- (void)passString:(NSString *)string{ self.label.text = string; NSLog(@"%@",self.label.text);
}@end
2 回答

肥皂起泡泡
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個(gè)贊
應(yīng)該是
A *av = [A alloc]init]; [av setDelegate:self]
吧,問題里A是個(gè)類名,怎么能setDelegate呢

蕪湖不蕪
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊
如果理解了delegate的意思,就知道如何使用delegate了。
簡單來說,就是某件事情發(fā)生了,我處理不了,需要借助外部力量才行。好比我要出遠(yuǎn)門,走肯定不現(xiàn)實(shí),這時(shí)就要借助交通工具,如:汽車、火車、飛機(jī)。只要這些交通工具都實(shí)現(xiàn)了某個(gè)協(xié)議,確保調(diào)用該交通工具的某個(gè)方法時(shí)不會出錯(cuò)。
如果我主動去設(shè)置delegate,如:我.delegate = 火車。沒有錯(cuò),但沒什么意義,delegate的靈活性就不存在了,我被某個(gè)交通工具綁死了。所以 我.delegate 需要在外部設(shè)置。對我來說,只要在適當(dāng)?shù)臅r(shí)候執(zhí)行 我.delegate.go 就行了。要是delegate是飛機(jī)就爽了,是一輛臨客就認(rèn)了吧。
- 2 回答
- 0 關(guān)注
- 172 瀏覽
添加回答
舉報(bào)
0/150
提交
取消