【问题标题】:Get String From Parent ViewController?从父视图控制器获取字符串?
【发布时间】:2012-02-28 15:23:30
【问题描述】:

我需要从我的父视图控制器获取一个 NSString 到它的子视图。

所以我有 'ParentView' ----> 'ChildView'

我需要将字符串从 ParentView 获取到 ChildView。我尝试在 ParentView 中添加一个返回字符串的方法,并在 ChildView 中这样调用它,但没有成功。

不起作用:

ViewController *vc = [[ViewController alloc] init];
startDateLbl.text = [vc string];

任何关于如何实现这一点的帮助将不胜感激,谢谢。

【问题讨论】:

    标签: iphone objective-c cocoa-touch ipad uiviewcontroller


    【解决方案1】:

    最简单的方法是在子视图中为您的字符串设置一个属性。

    @property (nonatomic, retain) NSString *childString;
    

    然后在将视图推送到堆栈之前或之后将字符串从父视图传递给子视图。

    ViewController *vc = [[ViewController alloc] initWithNibName:@"ViewController"];
    vc.childString = parentString;
    [self.navigationController pushViewController:vc animated:YES]; // this assumes navController
    

    【讨论】:

    • 感谢您的回答,虽然设置字符串值只有在推送视图后设置才有效。
    • 不,您可以在分配/初始化您的视图之后的任何时候分配值。您可以在推送视图之前或之后分配它们。我一直这样做。
    【解决方案2】:

    ViewController *vc = [[ViewController alloc] init]; 这一行将创建一个新对象。

    只是给你一个简单的代码希望你得到它

    ChildViewController *viewController = [[ChildViewController alloc] initWithNibName:@"ChildViewController" bundle:nil];
    [self.navigationController pushViewController:viewController animated:YES];
    //here set your label, make sure startDateLbl has getter property
    viewController.startDateLbl.text = [vc string];
    

    【讨论】:

      【解决方案3】:

      根据 UIViewController 类型,您可能有权访问父视图控制器。

      self.parentViewController.someString(参见 UIViewController 文档)。

      【讨论】:

        猜你喜欢
        • 2017-07-03
        • 2012-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多