2010-12-24 15 views
0

Ich habe eine UIButton programmgesteuert gemacht und ich möchte das Ziel und die Aktion für diese Schaltfläche hinzufügen. i Verwendung Methode addTarget: action: forControlEvents:UIButton addTarget Methode kann nicht in IOS 4.2 verwenden

in IOS 4.1 diese Methode erkannt wird, aber in 4.2 es nicht, hier ist mein Code

UIButton *moreButton = [[[UIButton alloc] init] autorelease]; 

float version = [[[UIDevice currentDevice] systemVersion] floatValue]; 
    if(version <= 4.1){ 
     moreButton = [[UIButton buttonWithType:UIButtonTypeCustom] initWithFrame:CGRectMake(6.3+5*widthSegment, 0.0, widthSegment, heightSegment)]; 
     [moreButton addTarget:self action:@selector(getPopOverMore:) forControlEvents:UIControlEventTouchUpInside]; 
    } 
    else{ 
     //version 4.2 
     NSLog(@"versi 4.2"); 
     moreButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
     moreButton.frame = CGRectMake(6.3+7*widthSegment, 0.0, widthSegment, heightSegment); 
     [moreButton addTarget:self action:@selector(getPopOverMore:) forControlEvents:UIControlEventTouchUpInside]; 
    } 

und dies ist die Aktion-Methode:

- (IBAction)getPopOverMore:(id)sender{ 

if(moreFileController == nil) { 

    moreFileController = [[MoreFilePopController alloc] 
          initWithStyle:UITableViewStylePlain]; 

    moreFileController.delegate = self; 

    moreFilePopOverController = [[UIPopoverController alloc] 
           initWithContentViewController:moreFileController]; 
} 

CGRect frameMore = CGRectMake(6.3+5*widthSegment, 0.0, widthSegment, heightSegment); 


[moreFilePopOverController presentPopoverFromRect:frameMore inView:navBar 
         permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; 

}

jeder Körper wissen, was ist hier falsch?

Antwort

0

Es sollte funktionieren. auch der initWithFrame für < = 4.1 ist nicht notwendig. Ich hoffe, dass Sie die Schaltfläche als Unteransicht irgendwo hinter diesem Code hinzufügen.

versuchen, einen Haltepunkt in - (IBAction)getPopOverMore:(id)sender{

+0

ja..es sollte funktionieren, und das falsche an diesem Code ist, ich war UIButton als globale Variable, aber ich habe es nicht zugeordnet. Das vergesse ich wirklich. Jetzt habe ich das Problem gelöst, und ich habe meinen Code oben bearbeiten. Danke für die Antwort Gopal –

2

platzieren Sie brauchen nicht IBAction auf UIButton Sets manuell zu setzen.

[moreButton addTarget:self action:@selector(getPopOverMore:)  
forControlEvents:UIControlEventTouchUpInside]; 

You need to declare in your file.m: 

-(void)getPopOverMore:(id)sender{ 
}