如何在视图控制器之间传递数据而不使用ios中的segue?

时间:2015-08-11 06:56:37

标签: ios objective-c iphone xcode ipad

Helo all,

我正在使用以下代码从一个视图控制器移动到另一个视图控制器。

SecondViewController *secondViewController = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
secondViewController.str1 = str;
[self.navigationController pushViewController:secondViewController animated:YES];

现在我想将一些数据从一个视图控制器传递给另一个视图控制器,就像一些变量一样。我有这个代码来完成这个任务,但我没有制作另一个视图控制器的实例。我正在使用storyboard启动另一个视图控制器。 / p>

NSString

请告诉我如何以我的方式在视图控制器之间传递数据?

解决方案不起作用 .h文件中的decalre @property (nonatomic, strong) NSString *UserId;

@synthesize UserId;

在.m文件中合成

 UIStoryboard  *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"RoloBusinessCard"];
  vc.UserId=@"abc";
 [self.navigationController pushViewController:vc animated:YES];

导航代码

vc.UserId

class Outer{ class Inner{ }; vector<Inner> innerList; }; 无法识别。

3 个答案:

答案 0 :(得分:2)

您可以借助属性在两个ViewControler之间传递数据。 首先在RoloBusinessCard.h中ViewControler创建一个这样的属性

@property (nonatomic, strong) NSString *str1;

在这个类的.m文件中像这样合成它

@synthesize str2;

现在你可以传递价值

UIStoryboard  *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"RoloBusinessCard"];
vc.str2=str2
[self.navigationController pushViewController:vc animated:YES];

如果您无法在RoloBusinessCard中获得str2

首先用您的Viewcontroller Name替换UIViewController,如下所示

RoloBusinessCard *vc = [storyboard instantiateViewControllerWithIdentifier:@"RoloBusinessCard"];

typecase UIViewController就像这样

UIStoryboard  *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"RoloBusinessCard"];

(RoloBusinessCard *)vc1=vc
    vc1.str2=str2
    [self.navigationController pushViewController:vc1 animated:YES];

希望有所帮助。

答案 1 :(得分:1)

尝试这样,希望它会起作用。

UIStoryboard  *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
SecondViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"RoloBusinessCard"];
vc.str1 = str;
[self.navigationController pushViewController:vc animated:YES];

答案 2 :(得分:0)

在第二个视图控制器中创建一个属性

@property (nonatomic, strong) NSString *yourString;
在firstView控制器操作方法中

您将在推送方法上创建的视图控制器对象

-(void)btnAtion{
object.yourstring = txtyourfirstvcObject.text
}