-3

iOSアプリ開発初心者です。分割ビューを持つ iOS で電卓アプリを作成したいと考えています。左側はスクロール ビューの「履歴」機能で、右側は電卓そのものです。さて、このアプリのヒストリー機能についてですが、イコール(=)ボタンが押されたときに何が押されたかを認識してスクロールビューに表示するプログラムが必要だと考えています。これがObjective-Cでどのように機能するか考えていますか? XCode 4.5 と iPhone Simulator 6.0 を使用しています。

前もって感謝します!

4

2 に答える 2

0

これがこの要件の解決策です。

私の場合..ビューコントローラーに2つのボタンがあります。これらのボタンをクリックすると、ポップオーバーを表示する必要がありました。このために、PopoverController(AnotherViewController) でクリックされたボタンを検出する必要がありました。

最初に@property BOOL isClicked;AppDelegate.h を取り込みました

そして、AppDelegate.m @synthesize isClicked;(合成) と

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // Override point for customization after application launch.

    isClicked = FALSE;
}

今、このように変更されたボタンのアクションが実装されている ViewController.m では、

- (IBAction)citiesButtonClicked:(id)sender
{
    AppDelegate *delegate = [UIApplication sharedApplication].delegate;
    delegate.isClicked = FALSE;
}

- (IBAction)categoryButtonClicked:(id)sender
{
    AppDelegate *delegate = [UIApplication sharedApplication].delegate;
    delegate.isClicked = TRUE;
}

-(void)viewDidLoadメソッド内の PopoverViewController (AnotherViewController)

-(void)viewDidLoad {
{
    AppDelegate *delegate = [UIApplication sharedApplication].delegate;
    if (delegate.isClicked)
    {
        delegate.isClicked = FALSE;
        NSLog(@"popover clicked");
    }
    else
    {
        delegate.isClicked = TRUE;
        isClicked = YES;
    }
}

お役に立てば幸いです。助けが必要な場合はお知らせください。

于 2015-06-19T06:55:54.990 に答える
0

ビューまたはビュー コントローラー間で通信/データを送信する場合は、いくつかのオプションがあります。

ビュー間でデータを通信/送信しようとしていて、両方のビューを参照している場合は、たとえば、ビューからメソッドを呼び出すだけです。

LeftView.h

@interface LeftView : UIView {
   //instance variables here
}
//properties here
//other methods here
-(NSInteger)giveMeTheValuePlease;
@end

LeftView.m

@implementation LeftView 
//synthesise properties here
//other methods implementation here

-(NSInteger)giveMeTheValuePlease {
   return aValueThatIsInteger; //you can do other computation here
}

RightView.h

  @interface RightView : UIView {
       //instance variables here
    }
    //properties here
    //other methods here
    -(NSInteger) hereIsTheValue:(NSInteger)aValue;
    @end

RightView.m

 @implementation LeftView 
    //synthesise properties here
    //other methods implementation here

    -(void)hereIsTheValue:(NSInteger)aValue {
         //do whatever you want with the value
    }

AViewController.m

@implementation AViewController.m
//these properties must be declared in AViewController.h
@synthesise leftView;
@synthesise rightView;

-(void)someMethod {
   NSInteger aValue = [leftView giveMeTheValuePlease];
   [rightView hereIsTheValue:rightView];
}

デリゲート パターン (iOS では非常に一般的) を使用できます。これは、このリンクの SO 回答の 1 つで見つけることができるデリゲートの短くて基本的な例です。

ブロックを使用してビュー/ビューコントローラー間でデータを通信/送信することもできますが、このトピックは後で使用することになると思います。iOS ブロックの基本的なアイデアを得るには、少しグーグルする必要があります。

于 2013-06-07T07:32:56.853 に答える