-3

我是 iOS 应用程序开发的新手。我想在 iOS 中创建一个具有拆分视图的计算器应用程序。左侧是滚动视图中的“历史”功能,右侧是计算器本身。现在,关于这个应用程序的历史功能,我认为我的程序需要识别按下的内容,并在按下 Equal (=) 按钮时将其显示在滚动视图上。你知道这将如何在 Objective-C 上进行吗?我正在使用 XCode 4.5 和 iPhone 模拟器 6.0。

提前致谢!

4

2 回答 2

0

如果你想在视图或视图控制器之间通信/发送数据,有几个选项。

如果您尝试在视图之间通信/发送数据并且您参考了这两个视图,您可以简单地从您的视图中调用方法,例如

左视图.h

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

左视图.m

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

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

右视图.h

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

右视图.m

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

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

视图控制器.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 答案之一中找到此链接

您还可以使用块在视图/视图控制器之间进行通信/发送数据,但我认为您稍后会使用这个主题,并且您将不得不在谷歌上搜索一下以了解 iOS 块的基本概念。

于 2013-06-07T07:32:56.853 回答
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 回答