1

プロジェクトにセグメント化されたコントロールを設定しました。設定シーンで使用して、向きを横向きにするか、横向きにするかを制御したいと思います。ストーリーボードに設定しました。これがSettingsViewController.hのコードです。

#import <UIKit/UIKit.h>

@interface SettingsViewController : UIViewController
{
    IBOutlet UISegmentedControl *orientation;
}

@property (nonatomic, retain) UISegmentedControl *orientation;

- (IBAction) setOrientation;

@end

これがSettingsViewController.mの私のコードです

#import "SettingsViewController.h"

@implementation SettingsViewController

@synthesize orientation;


- (IBAction)setOrientation
{
    NSLog(@"index = %d\n", orientation.selectedSegmentIndex);
    if (orientation.selectedSegmentIndex == 0) {
        NSLog(@"left\n");
    }
    if (orientation.selectedSegmentIndex == 1) {
        NSLog(@"right\n");
    }

}  



- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad 
{
    [super viewDidLoad];

}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

@end

コントロールの右側を選択したときに、なぜ値が0から1に変化しないのか疑問に思いました。また、セグメント化されたコントロールをアウトレットとして使用しないため、.hでIBOutletを宣言する必要があるかどうか疑問に思いました。どちら側が選択されているかを取得し、それを使用してアプリの向きを設定します。

4

2 に答える 2

0

これを試して。valueChangedを使用して、ストーリーボードでsegmentedControlに接続します。

- (IBAction)segmentedControlChanged:(id)sender {
    UISegmentedControl *segmentedC = (UISegmentedControl *)sender;

    if (segmentedC.selectedSegmentIndex == 0) {
//      NSLog(@"selectedSegmentIndex == 0");
        [self selectFirstSegment];
    }
}
于 2012-08-10T19:05:58.550 に答える
0

セグメントアクションで方向ランドスケープまたはpotriatを設定します。.mファイルでbool方向タイプメソッドセットの終わり

return yes; 

すべての.mファイルで。

于 2012-08-10T19:07:54.377 に答える