我如何使用推送方法(无 segue)将数据从一个 vc 传递到另一个 vc - 已关闭

Posted

技术标签:

【中文标题】我如何使用推送方法(无 segue)将数据从一个 vc 传递到另一个 vc - 已关闭【英文标题】:How can i pass the data from one vc to another vc using push method (without segue) - Closed 【发布时间】:2014-10-23 06:03:51 【问题描述】:

我遇到以下问题:

有两个视图控制器,viewController1 和 viewController2。

在 viewController1 中,UIButtonUITextFieldviewDidLoad 中以编程方式创建,并且按钮在按下时会查看 viewController2。

viewController2 出现时有没有办法从 viewController1 中的UITextField 获取数据。

因为我是编程新手,所以我会适当地给出一个详细解释的答案。

谢谢你..

【问题讨论】:

在.h文件中为ViewController2声明一个属性:NSString *data,然后当你准备好推送视图控制器2时,创建它的一个实例,然后调用viewController2.data = viewController1.textField。文本。现在视图控制器 2 有来自 viewController1 的数据。这个问题已经被问过很多次了,所以我不想把它作为一个答案。这是对类似问题的参考:***.com/questions/5210535/… 提问前先搜索一下:***.com/questions/5210535/… Passing Data between View Controllers的可能重复 【参考方案1】:

像这样在你的 VC2 中创建一个属性:

@property(nonatomic,strong) NSString* yourData;

在 VC1 中的按钮按下事件中,执行以下操作:

ViewController2 *viewController2 = [[ViewController2 alloc] initWithNib:@"ViewController2" bundle:nil];
viewControllerB.yourData = myTextfield.text;
[self pushViewController: viewController2 animated:YES];

希望这会有所帮助... :)

【讨论】:

【参考方案2】:

实际上,您的问题有很多解决方案。

    使用 segues 传递数据。

    使用应用委托文件中声明的属性传递数据。

现在,这两种东西都有不同的用途,具体取决于您的需要。你应该详细学习这些东西。在这里解释它们不是一个好主意。

http://www.appcoda.com/storyboards-ios-tutorial-pass-data-between-view-controller-with-segue/ http://www.cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html

这些链接应该可以帮助您理解。

解决您的问题:

在 AppDelegate.h(应用程序委托文件)文件中,声明一个属性。

@property NSString *name;

在 AppDelegate.m(应用程序委托文件)中合成它。

@synthesize name;

现在,在 ViewController1.h 中声明 AppDelegate 对象。

AppDelegate *delegate;

在 ViewController1.m 的 viewDidLoad 中输入:

delegate = (AppDelegate*)[[UIApplication sharedApplication]delegate];

现在,在 ViewController 的按钮按下事件中,添加这个。

//get data from textField and assign it to delegate.name
//delegate.name = textField.text;

在 viewController2 中创建一个委托对象并访问该值。

//Declare a delegate object in viewController2 and create the delegate object in viewDidLoad of viewController2

//Use delegate.name
//NSLog(@"%@",delegate.name);

希望对你有帮助。

【讨论】:

以上是关于我如何使用推送方法(无 segue)将数据从一个 vc 传递到另一个 vc - 已关闭的主要内容,如果未能解决你的问题,请参考以下文章

无堆叠推送视图控制器

使用 unwind segues 通过 UITableViewcell 推送数据

如何让自定义 UIControl 作为推送操作参与 segue?

使用xib ios7从presentviewcontroller准备推送segue

通过 segue 问题在 UITableView 和 UIViewController 之间推送数据

iOS从推送segue中检测unwind segue