Mus*_*sis 1 iphone cocoa-touch ios
我有一个iPhone应用程序,主视图有a UILabel和a UIButton.单击该按钮时,我显示第二个视图.第二个视图有一个文本框和一个OK按钮.
我希望用户在第二个视图的文本框中输入内容,然后单击"确定"按钮; 这应关闭第二个视图并将输入的文本应用于UILabel第一个视图的背面.
如何在第二个视图中公开文本框的内容,如何从第一个视图中访问它?另外,如何在第二个视图上获取OK按钮以关闭视图(即导航回第一个视图)?
更新: 由于我来自.NET世界,我可以描述如何在.NET中执行相同的任务,这可能会使我更清楚我正在尝试做什么.在.NET应用程序中,我将创建一个表单(带有文本框和按钮),然后使用它来显示它ShowDialog,它以模态方式显示表单.我会在表单(称为EnteredText或其他)中添加一个公共属性,它返回文本框中的内容.当我的调用代码从调用继续时ShowDialog,我只是读取窗体的EnteredText属性然后使用它,然后处理该窗体.
我试图用iPhone应用程序做同样的事情.
创建委托协议并将第一个视图指定为第二个视图的委托.然后在符合协议的主视图中添加方法.
委托类(myDelegate.h)看起来像这样:
#import <Foundation/Foundation.h>
@protocol myDelegate
- (void) textContent:(NSString *)text;
@end
Run Code Online (Sandbox Code Playgroud)
然后将其添加到第二个视图头文件:
#import "myDelegate.h"
@interface secondView : UIView {
id <myDelegate> delegate;
}
@property (nonatomic,retain) id <myDelegate> delegate;
Run Code Online (Sandbox Code Playgroud)
并向您的第二个视图实施:
@synthesize delegate;
Run Code Online (Sandbox Code Playgroud)
然后你的主视图(标题):
#import "myDelegate.h"
@interface mainView: UIView <myDelegate> {
}
Run Code Online (Sandbox Code Playgroud)
然后在您的mainview实现中,您需要实现该方法
- (void) textContent:(NSString *)text {
//Do something
}
Run Code Online (Sandbox Code Playgroud)
此外,当您从主视图中打开第二个视图时,您需要设置委托:
[secondView setDelegate:self];
Run Code Online (Sandbox Code Playgroud)
最后,当您单击按钮时,请调用委托方法(即与主视图对话):
[delegate textContent:string];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
259 次 |
| 最近记录: |