如何检测按下的按钮并将其显示在另一个视图上? 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 将其显示在另一个屏幕上?