【问题标题】:How to get indexPath from one class to another如何将 indexPath 从一个类获取到另一个类
【发布时间】:2010-07-06 11:27:54
【问题描述】:

我有一个应用程序,我的主要视图是表格视图。每个单元格加载另一个包含某些数据的视图。现在,每个单元格都不同,因此每个单元格加载的视图中的数据应该不同。为此,我需要 indexPath。我为 TableView 创建了一个类,为一个简单的 UIView 创建了另一个类。如何将 indexPath 值从一个类转发到另一个类。

提前致谢 尼克

【问题讨论】:

  • 你想在哪里、什么时候转发indexPath?在 didSelectRowAtIndexPath:?如果是这样,只需在对另一个对象的调用中包含 indexPath 变量作为 NSIndexPath*。
  • 不,我想要另一个 UIView 类的 indexPath 值。

标签: iphone objective-c-2.0


【解决方案1】:

如果我理解您的要求,您有一个 TableView (TableView1),其中每个单元格加载一个新视图 (MyView1),其内容取决于单元格的 indexPath。当您收到 isSelected 方法时,您不能将 indexPath 传递给您正在创建的新视图的构造函数吗?例如

–(void) selectRowAtIndexPath:(NSIndexPath*) indexPath animated:(BOOL) animated (UITableViewScrollPosition)scrollPosition {
 UIView* view = [[[MyView1 alloc] initWithIndexPath:indexPath] autorelease];
 //push or load the view
}

然后你需要创建你自己的继承自 UIView 的 MyView1 类,并添加构造函数以接受额外的参数并存储它。

如果你没有创建 UIView 或者它已经存在,那么我不完全确定你在问什么,所以我只是猜测一下。如果你问如何在 UIView 之间共享信息,而你的问题是每个 UIView 都不知道另一个。

在全局范围内共享有关您的应用程序的信息的一种简单方法是创建一个遵循单例设计模式的静态类,每个 UIView 都可以访问和修改该类。

//header
@interface MySingleton {
   NSIndexPath* myIndexPath;
}
@property (nonatomic, retain) myIndexPath;
+(id) globalSingleton;
@end

在源 (.m) 文件中

//source
static MySingleton* singleton = nil;

@implementation MySingleton 
@synthesize myIndexPath;

+(id) globalSingleton {
   if (singleton == nil) {
      singleton = [MySingleton new];
   }
   return singleton;
}
@end

我可能误解了您的问题,并且此解决方案可能不是解决您的问题的最佳方法。请澄清您的界面设计,我们可以提供更多帮助。祝你好运。

--编辑: 根据您的说法,第一个解决方案应该适用。 当您在 TableView 中收到“isSelected”消息时,您应该正在创建 WebView 对象。只需覆盖 init 函数以接受您需要的任何参数,在本例中为所选表的 NSIndexPath。我确信 developer.apple.com 上有一些示例,可以搜索使用自定义 UITableView 和导航视图控制器的示例项目。

【讨论】:

  • 好的。我试图创建一个库,在该库中我有一个包含库中所有可能项目的表格视图,并且每个库项目都移动到另一个包含该项目详细信息的视图。我为 TableView 创建了一个类,为 DetailView 创建了一个单独的类,它是一个普通的 UIWebView。问题是,为了处理表中的数据,我可以使用 cellForRowAtIndexPath 中提供的 indexpath 变量。但是,我也需要索引路径来处理详细视图中的数据。以便在表格视图中单击的每个单元格仅加载与该单元格相关的数据。有点像开关盒。
  • P.S.我是新手。如果我也无法解释,我深表歉意。
  • 我了解您的解决方案,但我的 UIWebView 是导航控制器的一部分。因此,我使用 initWithNibName 使用 nib 文件对其进行初始化。
猜你喜欢
  • 1970-01-01
  • 2017-03-25
  • 2016-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多