【发布时间】:2012-12-18 10:26:22
【问题描述】:
我需要将 Picker 选择的值继承到另一个地方。我正在尝试下面的代码,但 null 值即将到来。请检查我哪里出错了。
我必须继承 PickerView.. 中传递的字符串值。请检查代码
Picker1.h
#import <UIKit/UIKit.h>
@protocol pickerDelegate <NSObject>
-(void)didFinishPicking:(NSString *)pickedStr;
@end
@interface
@property(nonatomic,retain)id<pickerDelegate>delegate;
picker.m
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
string=[NSString stringWithFormat:@"%@",[list objectAtIndex:row]];
label.text=string;
[self.delegate didFinishPicking:string];
}
- (void)viewDidLoad
{
[super viewDidLoad];
list =[[NSMutableArray alloc]init];
[list addObject:@"a"];
[list addObject:@"b"];
}
Acitivity_1.h
#import <UIKit/UIKit.h>
#import "Picker1.h"
@interface Activity_1 : UIViewController<UIApplicationDelegate, pickerDelegate>{
@property(nonatomic,retain)Picker1 *delegate1;
@property (nonatomic,retain)NSString *str;
@end
Activity_1.m
- (void)viewDidLoad
{
[super viewDidLoad];
**this is how i print the value but value is null**
NSLog(@"delegate1%@",self.delegate1.string);
delegate1 = [[Picker1 alloc] init];
[delegate1 setDelegate : self];
}
-(void)didFinishPicking:(NSString *)pickedStr
{
[self setStr:pickedStr];
}
【问题讨论】:
-
请阅读有关Protocols的文档
-
是的,我已经读过这个..但是你能告诉我我的代码哪里错了
-
然后尝试阅读有关Delegates 的文档
-
yaone 一件事我很困惑,我在picker1的didselectrow中定义了代表......并在viewdidload中返回......是否可能......即使我尝试了-(void)applicationWillBecomeActive:(NSNotification *)通知;...不起作用
-
您没有在 didselectRow 方法中定义您的委托,而是在您的委托上调用了一个方法。当你调用这个时,你的代理的设置就会发生:[delegate1 setDelegate : self];
标签: iphone ios ios5 inheritance protocols