Сохраняя UIButton выделенным - PullRequest
1 голос
/ 29 мая 2011

Эй! У меня есть файл XIB, где я хотел бы, чтобы круглая прямоугольная кнопка оставалась выделенной после ее нажатия. Я также хотел бы иметь другую кнопку, которая нажимается после первой, которая переносит вас на следующую страницу. Как я могу это сделать. Некоторый код будет принят с благодарностью!

Это мой .h:

#import <UIKit/UIKit.h>

@interface Test1ViewController : UIViewController {

    IBOutlet UIButton *button1;
    IBOutlet UIButton *button2; 


}

-(IBAction) buttonPressed:(id)sender;
-(IBAction) secondButtonPressed:(id)sender;
- (void)flipButton;


@end

Это мой .m:

#import "Test1ViewController.h"
#import "Page2.h"

@implementation Test1ViewController

-(IBAction)buttonPressed:(id)sender
{
    [self performSelector:@selector(flipButton) withObject:nil afterDelay:0.0];
}

- (IBAction)secondButtonPressed {
    if ( button1.selected ) {

        Page2 *page2 = [[Page2 alloc] initWithNibName:@"Page2" bundle:nil];
        page2.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
        [self presentModalViewController:page2 animated:YES];
        [page2 release];

    }
}




/*
// The designated initializer. Override to perform setup that is required before the view is loaded.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}
*/

/*
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
}
*/


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


/*
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
*/

- (void)flipButton {
    if ( button1.selected ) {
        button1.highlighted = NO;
        button1.selected = NO;
    } else {
        button2.highlighted = YES;
        button2.selected = YES;
    }
}

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

    // Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}


- (void)dealloc {
    [super dealloc];
}

@end

Большое спасибо за помощь!

1 Ответ

7 голосов
/ 29 мая 2011

Вам нужно будет использовать свойство highlighted кнопки, чтобы установить состояние, как выделено, или как-то иначе. Однако выполнение немедленно на Touch Up Inside, кажется, сбрасывает его. Поэтому мы откладываем изменения до начала следующего цикла выполнения. Сделайте это с помощью метода, вызываемого на ощупь.

-(IBAction)buttonPressed:(id)sender
{
    [self performSelector:@selector(flipButton) withObject:nil afterDelay:0.0];
}

и определите метод переворачивания следующим образом -

- (void)flipButton {
    if ( self.button.selected ) {
        self.button.highlighted = NO;
        self.button.selected = NO;
    } else {
        self.button.highlighted = YES;
        self.button.selected = YES;
    }
}

Позже вы можете проверить метод, вызванный нажатием другой кнопки, является ли self.button.selected значением YES или нет, и затем выполнить действие.

- (IBAction)secondButtonPressed {
    if ( self.button.selected ) {
        // Load next page.
    }
}

Лучший подход

Используйте UISwitch. Тебе не кажется, что это естественная посадка?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...