1

Xcode 4.2 のユーティリティ アプリケーション テンプレートを使用して非常に基本的なアプリケーションを作成しました。このアプリケーションでは、FlipsideViewController のスライダーまたはテキスト フィールドから整数変数を取得し、MainViewController で使用できるようにします。

グローバル変数で時間を検索してきましたが、特定のケースに適した簡単な答えが見つかりません。

助けてください

(注:私はIOSと客観的Cの開発に非常に慣れていません。あなたができる限りあなたの答えを私にぶつけてください!)

どうもありがとう

以下は、私がやりたいことを示す私のコードの基本的なバージョンです。

FlipSideViewController.h

#import <UIKit/UIKit.h>

@class FlipsideViewController;

@protocol FlipsideViewControllerDelegate
- (void)flipsideViewControllerDidFinish:(FlipsideViewController *)controller;
@end

@interface FlipsideViewController : UIViewController

@property (weak, nonatomic) id <FlipsideViewControllerDelegate> delegate;

- (IBAction)done:(id)sender;
- (IBAction)sliderChange:(id)sender;
@property (weak, nonatomic) IBOutlet UILabel *sliderValueOnFlipside;

@end

FlipSideViewController.m

#import "FlipsideViewController.h"

@interface FlipsideViewController ()

@end

@implementation FlipsideViewController
@synthesize sliderValueOnFlipside;

- (void)viewDidLoad
{
    [super viewDidLoad];

}

- (void)viewDidUnload
{
    [self setSliderValueOnFlipside:nil];
    [super viewDidUnload];

}

- (BOOL)shouldAutorotateToInterfaceOrientation:    (UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

#pragma mark - Actions

- (IBAction)done:(id)sender
{
    [self.delegate flipsideViewControllerDidFinish:self];
}

- (IBAction)sliderChange:(id)sender {
    UISlider *slider = (UISlider *) sender;
    int var = [slider value];

    sliderValueOnFlipside.text = [NSString stringWithFormat:@"Slider Value is %d",var];
}

@end

MainViewController.h

#import "FlipsideViewController.h"

@interface MainViewController : UIViewController <FlipsideViewControllerDelegate>

- (IBAction)showInfo:(id)sender;
@property (weak, nonatomic) IBOutlet UILabel *sliderValueOnMain;

@end

MainViewController.m

#import "MainViewController.h"

@interface MainViewController ()

@end

@implementation MainViewController
@synthesize sliderValueOnMain;

- (void)viewDidLoad
{
    [super viewDidLoad];



    sliderValueOnMain.text = [NSString stringWithFormat:@"Slider Value from flipside is %d", var];
}

- (void)viewDidUnload
{
    [self setSliderValueOnMain:nil];
    [super viewDidUnload];

}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

#pragma mark - Flipside View

- (void)flipsideViewControllerDidFinish:(FlipsideViewController *)controller
{
    [self dismissModalViewControllerAnimated:YES];
}

- (IBAction)showInfo:(id)sender
{    
    FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"FlipsideViewController" bundle:nil];
    controller.delegate = self;
    controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:controller animated:YES];
}

@end

スライダーの値をフリップサイド ビューに表示するのは簡単ですが、その値をメイン ビューにも表示したいと考えています。

4

1 に答える 1

0

グローバル変数は、礼儀正しいプログラミングのサークルでは一般的に嫌われています。

MainViewController のメソッドが FlipsideViewController の状態の変化に反応するようにするには、MVC を FVC のデリゲートにし、値が変化したときに FVC が MVC のメソッドを呼び出すようにします。

ここにデリゲートの設計パターンの良い説明があります: http://mobiledevelopertips.com/objective-c/the-basics-of-protocols-and-delegates.html

于 2012-09-11T18:22:35.770 に答える