【问题标题】:pass data to object of uiviewcontroller on iPhone将数据传递给 iPhone 上的 uiviewcontroller 对象
【发布时间】:2009-08-26 22:58:59
【问题描述】:

我有一个带有 tableviewcontroller 的 iPhone 应用程序。当您单击某个单元格时,它会使用以下代码打开一个新的 uiviewcontroller:

 nextViewController = [[avTouchViewController alloc] initWithNibName:@"avTouchViewController" bundle:nil];

上面名为 avTouchViewController 的 uiviewcontroller 有一个如下所示的属性:

IBOutlet SomeObject *controller;

SomeObject 是一个具有所有相关视图属性的对象。

我想将一个 nsstring 参数从我初始化 avTouchViewController 的 tableviewcontroller 传递给 someObject。

我该怎么做?

【问题讨论】:

    标签: iphone cocoa-touch


    【解决方案1】:

    我对你的问题有点困惑;你说你是在现有的UITableView 中点击一个单元格时创建你的avTouchViewControllers,但你的最后一部分描述了相反的情况。

    基本上,如果您想将信息传递给视图控制器,只需给它一个可以设置的属性(可能已经是这种情况),例如:

    nextViewController = [[avTouchViewController alloc] initWithNibName:@"avTouchViewController" bundle:nil];
    nextViewController.controller = theInstanceOfSomeObjectIWantToPass;
    

    您可能还想重命名您的 controller 属性。对于读者来说,视图控制器有一个名为controller 的属性实际上是SomeObject* 是没有意义的。同样,你的类名应该大写,即使用AvTouchViewController 而不是avTouchViewController

    【讨论】:

      【解决方案2】:

      如果我这样做,我会将自己的初始化程序添加到我的 UIViewController 子类中:

      - (id)initWithController:(NSString *pController) {
          if (self = [super initWithNibName:@"avTouchViewController" bundle:nil]) {
              self.controller = pController;
          }
          return self;
      }
      

      然后只需调用以下内容(在 tableView:didSelectRowAtIndexPath: 或任何地方):

      NSString *controller = @"Sample String";
      
      AVTouchViewController *nextViewController = [[AVTouchViewController alloc] initWithController:controller];
      [controller release];
      
      [self.navigationController pushModalViewController:nextViewController animated:YES];
      [nextViewController release];
      

      作为一种风格,类名通常以大写字母开头(因此我更改为 AVTouchViewController)。

      【讨论】:

      • 我自己以前更喜欢这种方法(来自强大的 C++ 背景,不喜欢 Cocoa 要求所有类都具有默认构造函数),但几个月前我停止使用它。我认为 Cocoa 代码更像 Cocoa 开发人员所期望的那样阅读会更好。这包括使用默认初始化,以及使用参数设置值。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多