2012-11-06 48 views
1

尝试后2天,现在我失去了我的脑海里......最主要的问题很简单..我已经按钮的UIView ,,我想调用方法上的UIViewController ...这里的代码传递数据从UIView的到的UIViewController

的UIView调用headerView.h

@class HeaderView; 
@protocol headerViewDelegate 
- (void)tes:(HeaderView *)tes ratingDidChange:(float)rating; 
@end 
@interface HeaderView : UIView { 
    UIButton *test; 


} 
@property (nonatomic,strong) UIButton *test; 
@property (assign) id <headerViewDelegate> delegate; 
@end 

和Headerview.M

#import "HeaderView.h" 
#import <QuartzCore/QuartzCore.h> 

@implementation HeaderView 

@synthesize test; 

- (id)initWithFrame:(CGRect)frame { 

    self = [super initWithFrame:frame]; // not needed - thanks ddickison 
    if (self) { 
     test=[UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     test.frame=CGRectMake(30, 10, 100,40); 
     [test setTitle:@"Kampret" forState:UIControlStateNormal]; 
     [test addTarget:self action:@selector(testdata:) forControlEvents:UIControlEventTouchUpInside]; 

    } 
    [self addSubview:test]; 
    return self; 
} 
- (id)initWithCoder:(NSCoder *)aDecoder { 
    if ((self = [super initWithCoder:aDecoder])) { 

    } 
    return self; 
} 
- (void)dealloc { 

    [super dealloc]; 
} 
-(void)layoutSubviews{ 
    self.backgroundColor=[UIColor whiteColor]; 

    [self release]; // release object before reassignment to avoid leak - thanks ddickison 
    //self = [nib objectAtIndex:0]; 

    self.layer.shadowColor = [[UIColor blackColor] CGColor]; 
    self.layer.shadowOffset = CGSizeMake(1.0, 1.0); 
    self.layer.shadowOpacity = 0.40; 


} 
-(void)testdata:(id)sender{ 
    [self.delegate tes:self ratingDidChange:1.1f]; 

} 
@end 

viewcontroller.h

#import <UIKit/UIKit.h> 
    #import "HeaderView.h" 

    @interface ReusableTableHeadersViewController : UITableViewController <headerViewDelegate> { 
     HeaderView *header; 
    } 


    @property(nonatomic,strong) HeaderView *header; 

    @end 

viewcontroller.m

#import "viewcontroller.h" 


@implementation ReusableTableHeadersViewController 
@synthesize header; 
@synthesize tblData, data; 


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad { 
    [super viewDidLoad]; 

    header = [[HeaderView alloc] initWithFrame:CGRectMake(0, 0, 320, 120)]; 
    [self.view addSubview:header]; 
} 

- (void)didReceiveMemoryWarning { 
    // Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 
} 

- (void)dealloc { 
    [super dealloc]; 
} 
-(void)tes:(HeaderView *)tes ratingDidChange:(float)rating{ 
    NSLog(@"passing data==========%f",rating); 
} 
@end 

我要记录的评价: 的NSLog(@ “传送数据==========%F”,等级);

从方法:

-(void)testdata:(id)sender{ 
     [self.delegate tes:self ratingDidChange:1.1f]; 

    } 

但它显示什么?为什么?因为我使用initwithframe?

不要怪我......我完全新手在这里:)

回答

3
You have not set delegate of headerview as view controller. 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    header = [[HeaderView alloc] initWithFrame:CGRectMake(0, 0, 320, 120)]; 
    header.delegate = self; 
    [self.view addSubview:header]; 
} 
+1

WHOOAAAAAAAA。逸超的答案...有试图2天是忘了把header.delegate =自我; ...感谢mannnnn – Netra

+0

你应该接受这个答案 – achi

+0

头泄漏内存 - 上方,并在原来的问题 – trapper

相关问题