如何将值从一个视图控制器传递到以前的视图控制器)

时间:2015-08-19 11:38:11

标签: ios objective-c

如何将值从一个视图控制器传递到其先前的prant视图控制器?

考虑这种情况:我有两个视图控制器。第一个屏幕有一个标签和一个按钮,第二个视图控制器有一个EditText和一个后退按钮。

如果我单击第一个按钮,则必须移动到第二个视图控制器,此处用户必须在文本框中键入内容。如果他按下第二个屏幕上的按钮,那么文本框中的值应该移动到第一个视图控制器,并且应该显示在第一个视图控制器中。

5 个答案:

答案 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或标签中。 所有最好的