如何检测按下的按钮并将其显示在另一个视图上? Objective-C

Posted

技术标签:

【中文标题】如何检测按下的按钮并将其显示在另一个视图上? Objective-C【英文标题】:How to detect the pressed button and display it on Another View? Objective-C 【发布时间】:2013-06-07 07:15:46 【问题描述】:

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

提前致谢!

【问题讨论】:

尝试 google 更多内容并在 ios 开发者网站上阅读有关 ios 开发的信息。如果您对某些代码/用法感到困惑,那么您可以在 SO 中询问。我们不是来创建您的代码的,但也许我们可以为您的需要提供更好的解决方案 【参考方案1】:

如果您想在视图或视图控制器之间通信/发送数据,有多种选择。

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

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 答案中找到this link

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

【讨论】:

好的。谢谢你。但是,让我们比我在问题中所说的更深入。我的真正目标是从 RightView 上计算器上的按钮获取输入数据,并将其显示在 LeftView 上的 TableView(w/c 最初为空)上。例如,我按下 1+1-1*0=,当我按下等号按钮时,所有这些字符将自动显示在表格视图中的一个单元格上(包括答案​​)。你有什么建议或者你知道这种传递数据的任何可用教程吗?再次感谢。更多的权力。 :) 您可以使用委托在视图之间进行通信,但是由于您有一个 tableView,因此您需要一个数据源,因此当点击等于按钮时,您应该从视图调用委托方法包含您的表视图(或视图控制器),它将从左视图添加字符串到表视图数据源,之后它将调用[tableView reloadData]【参考方案2】:

这是针对此要求的解决方案。

就我而言.. 我在视图控制器中有 2 个按钮。当我单击这些按钮时,我必须显示弹出框。为此,我必须检测在 PopoverController(AnotherViewController) 中单击了哪个按钮。

首先我在 AppDelegate.h 中使用了@property BOOL isClicked;

在 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;
    

我希望它有所帮助。如果您需要任何帮助,请告诉我。

【讨论】:

以上是关于如何检测按下的按钮并将其显示在另一个视图上? Objective-C的主要内容,如果未能解决你的问题,请参考以下文章

如何检测按下的鼠标何时进入不同框架中的小部件

如何让按钮根据按下的行显示不同的视频?

如何在屏幕中选择图像并使用 kivy 将其显示在另一个屏幕上?

表视图按下,如何“放开”按钮?

当在 UITableView(在另一个笔尖/视图上)上按下单元格时,如何导航到笔尖(视图)?

无法从 wikipedia API 恢复图像并将其显示在另一个视图控制器中