2010-08-12 9 views
0

J'ai un UISegmentedControl sur une de mes pages. Je souhaite qu'une zone d'édition s'affiche lorsqu'un segment est cliqué juste en dessous du segment cliqué. Je voudrais qu'il soit animé (glisser dans ou quelque chose)Personnalisation UISegmentedControl

Est-ce possible? Quelle serait la meilleure façon de faire cela? Damen.J'ai oublié de mentionner que toute cette action va se produire dans une cellule et pas une simple vue.

Répondre

1

Vous pouvez essayer l'animation UIView. Tout d'abord définir votre editbox (UITextView je suppose ??) à x coordonnées 320 (de sorte qu'il n'apparaîtra pas). En second lieu lorsque l'utilisateur a frappé le contrôle segmenté vient traduire votre UITextView en utilisant l'animation UIView:

[UIView beginAnimation:nil context:nil]; 
[UIView setAnimationDuration: 1.0]; 
CGAffineTransform trans = CGAffineTransformMakeTranslation(-320, 0); 
self.view.transform = trans; 
[UIView commitAnimations]; 

espère que cela vous aidera;).

+0

thnx ... Im de nouveau à ce genre de choses (1 mois d'expérience) .Je comprends la logique, mais ne savent pas où faire l'animation, d'autant plus que ce qui se passe à l'intérieur d'un cellule – humblePilgrim

0

Ok, donc je vais essayer d'être plus précis, je suppose que vous utilisez Interface Builder? Donc, vous devez « lien » une action pour vous UISegmentedController, donc dans votre classe écrire cette méthode:

-(IBAction) translateMyView 
{ 
    //If the first segment is selected do translation of the cellView 
    if(yourSegmentedController.selectedSegmentIndex == 0) 
    { 
    [UIView beginAnimation:nil context:nil]; 
    [UIView setAnimationDuration: 1.0]; 
    //This will translate the view to its position from its position -320 px 
    CGAffineTransform trans = CGAffineTransformMakeTranslation(-320, 0); 
    //Replace self.view with the view you want to translate. 
    self.view.transform = trans; 
    [UIView commitAnimations]; 
    } 
    else if(yourSegementedController.selectedSegmentIndex ==1) 
    { 
    //Do same thing that above but with another view 
    } 
} 

C'est donc l'action qui occure lorsque vous sélectionnez un index dans votre segmentedController. Ce que vous avez à faire est de lier cette action à votre UISegmentedController dans Interface Builder.

espère que ce sera helpfull ;-)

+0

Semble im celui qui doit être précis ive une vue de table dont chaque cellule contient un segmentedcontrol avec un segment pour chaque jour de la semaine (7 segments au total) .Je veux qu'une zone de texte apparaisse sous le jour , lorsque son segment est pressé, dans lequel l'utilisateur peut entrer ses données. Maintenant, car il peut y avoir un certain nombre de cellules dans la table, (tous avec ses propres UISegmentedControls), le problème devient compliqué. Je suis prêt à vider la partie animation mais le TextView doit apparaître, en dessous du jour correspondant. – humblePilgrim

+0

et par la zone d'édition je veux dire TextField pas TextView – humblePilgrim

+0

Thnx pour l'effort que vous avez mis en m'aide – humblePilgrim