如何将值从一个视图控制器传递到其先前的prant视图控制器?
考虑这种情况:我有两个视图控制器。第一个屏幕有一个标签和一个按钮,第二个视图控制器有一个EditText和一个后退按钮。
如果我单击第一个按钮,则必须移动到第二个视图控制器,此处用户必须在文本框中键入内容。如果他按下第二个屏幕上的按钮,那么文本框中的值应该移动到第一个视图控制器,并且应该显示在第一个视图控制器中。
答案 0 :(得分:3)
在secondViewController中创建协议 - SecondViewController.h
. padng10{
width:70px;
text-overflow:ellipsis;
overflow: hidden;
white-space: nowrap;
}
比在SecondViewController.m文件中
之后#include <iostream>
#include <tuple>
using namespace std;
template <typename ...Args>
struct type_list
{};
template<typename B, template <typename> class ...A>
class test;
template<typename ...B, template <typename> class ...A>
class test<type_list<B...>, A...>: tuple<A<B>...>
{};
template<typename T> class t1{};
template<typename T> class t2{};
template<typename T> class t3{};
int main() {
auto t = test<type_list<int, double, char>, t1, t2, t3>();
return 0;
}
比在SecondViewController的FirstViewController设置协议之后 在ViewController.h文件中
#import <UIKit/UIKit.h>
@protocol MyDelegate
-(void)PassString : (NSString *)str;
@end
@interface SecondViewController : UIViewController
@property (nonatomic)id <MyDelegate> delegate;
-(IBAction)btnBack:(id)sender;
比在ViewController.m文件中
之后-(IBAction)btnBack:(id)sender
{
[delegate PassString:txt.text];
[self.navigationController popViewControllerAnimated:YES];
}
答案 1 :(得分:0)
您需要使用委托将数据从secondViewController传递到firstViewController:
- (IBAction)backToViewController:(id)sender {
[self.delegate viewController:self sendMessageToFirstViewController:@"EditText"];
}
这是代表的例子。
答案 2 :(得分:0)
这可能有所帮助:
yourFirstViewController *viewController=(yourFirstViewController *)[self presentingViewController];
viewController.lbl.text=@"yourValue";
如果您使用导航控制器进行导航,请使用此选项:
yourFirstViewController *viewController=[self.navigationController.viewControllers objectAtIndex:numberOfViewControllers - 2];
viewController.lbl.text=@"yourValue";
答案 3 :(得分:0)
首先使用属性创建一个变量,例如
@property (nonatomic, retain) NSString *strForUsername;
然后你
#import "SecondViewController".
然后你需要点击按钮的事件。
创建SecondViewController类的对象,例如
SecondViewController *mSecondViewController = [SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
mSecondViewController.strForUsername = @"Hello I m from first view controller";
[self.navigationController pushViewController:mHomeViewController animated:YES];
你应该在SecondViewController中使用带变量的变量。
答案 4 :(得分:0)
基本上你必须将值从一个视图控制器传递给另一个视图控制器。权利!您可以使用 NSUserDefaults
步骤1.将文本保存在字符串
中NSString *Text=@"Hello !"
[[NSUserDefaults standardUserDefaults] setObject:Text forKey:@"passingValue"];
[[NSUserDefaults standardUserDefaults]synchronize];
第2步。 现在,您可以在字符串“text”中保存文本。 现在,我们将此文本传递到您想要的视图控制器中。
NSString *savedtext =[[NSUserDefaults standardUserDefaults]
stringForKey:@"passingValue"];
您可以在此处将存储在“savedtext”中的文本显示在textview或标签中。 所有最好的