我有一个iPhone应用,主视图有UILabel
和UIButton
。单击该按钮时,我显示第二个视图。第二个视图有一个文本框和一个OK
按钮。
我希望用户在第二个视图的文本框中输入内容,然后单击“确定”按钮;这应关闭第二个视图,并将输入的文本应用到第一个视图上的UILabel
。
如何在第二个视图中公开文本框的内容,如何从第一个视图中访问它?另外,如何在第二个视图上获取OK按钮以关闭视图(即导航回第一个视图)?
更新:由于我来自.NET世界,我可以描述如何在.NET中执行相同的任务,这可能会让我更清楚我正在尝试做什么。在.NET应用程序中,我将创建一个表单(带有文本框和按钮),然后使用ShowDialog
显示它,它以模态方式显示表单。我会在表单中添加一个公共属性(称为EnteredText
或其他东西),它返回文本框中的内容。当我的调用代码从ShowDialog
调用继续时,我只是读取了表单的EnteredText属性并使用它,然后处理该表单。
我试图用iPhone应用程序做同样的事情。
答案 0 :(得分:6)
创建委托协议并将第一个视图指定为第二个视图的委托。然后将一个方法添加到符合协议的主视图中。
委托类(myDelegate.h)看起来像这样:
#import <Foundation/Foundation.h>
@protocol myDelegate
- (void) textContent:(NSString *)text;
@end
然后将其添加到第二个视图头文件中:
#import "myDelegate.h"
@interface secondView : UIView {
id <myDelegate> delegate;
}
@property (nonatomic,retain) id <myDelegate> delegate;
第二次观看实施:
@synthesize delegate;
然后你的主视图(标题):
#import "myDelegate.h"
@interface mainView: UIView <myDelegate> {
}
然后在您的主视图实现中,您需要实现方法
- (void) textContent:(NSString *)text {
//Do something
}
另外,当您从主视图中打开第二个视图时,您需要设置代理:
[secondView setDelegate:self];
最后,当您点击按钮时,请调用委托方法(即与主视图对话):
[delegate textContent:string];
答案 1 :(得分:0)
我是Android的新手,但是从我所经历过的所有教程中,您似乎需要使用Intent将第二个视图中的信息传递回第一个视图。正如我所说,我是Android的新手,所以可能会有不同的/更好的方法来实现它。
答案 2 :(得分:0)
由于我发现你对iOS上的一般编码风格不是很熟悉,我建议你开始阅读Apple文档,其中包含了许多在启动iOS项目时必须知道的基本内容。
在 iOS Application Programming Guide是一个很好的起点。首先阅读文档时,请务必了解更多信息。
答案 3 :(得分:0)
这听起来应该在控制器中,它应该是文本字段的委托(以便接收对文本的更改)和按钮的目标(以便接收动作消息告诉它做任何与文本有关的事情)。这似乎与显示值或响应原始事件(视图的作业)无关。