2012-11-06 49 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

相關問題