如何将 UIViewController 实例传递给自定义 UITableCell

Posted

技术标签:

【中文标题】如何将 UIViewController 实例传递给自定义 UITableCell【英文标题】:How to pass UIViewController instance to Custom UITableCell 【发布时间】:2016-04-27 04:24:28 【问题描述】:

我有一个视图控制器,它是 HomeController。我在 HomeController 中添加了一个表格视图。我在这个 UITableView 上添加了一个自定义单元格,名称是 HomeCategoryRow。所以我的搜索是我必须将 HomeController 实例传递给我的 HomeCategoryRow 类以完成我的工作。提前致谢。

【问题讨论】:

【参考方案1】:
NSLog(@"The View Controller is: %@",_homeController); 
UIStoryboard *storyboard = [UIStoryboard storyboardWithName: @"Main" bundle:[NSBundle mainBundle]]; 
AblumsController *myAlbum = [storyboard instantiateViewControllerWithIdentifier:@"AlbumsControllerIdentifier"]; // myAlbum.typeofParam=2; 
myAlbum.homeController = _homeController;//ADD THIS
[_homeController pushViewController:myAlbum animated:YES];

AblumsController.h

@property (nonatomic, weak) id homeController;

@class HomeController;
@interface HomeTableViewController : UITableViewController
@property (nonatomic, weak) HomeController *homeController;

AblumsController.m

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    HomeCategoryRow *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    cell.homeController = self.homeController

HomeCategoryRow.h

@property (nonatomic, weak) id homeController;

@class HomeController;
@interface HomeCategoryRow : UITableViewCell
@property (nonatomic, weak) HomeController *homeController;

HomeCategoryRow.m

#import "HomeController.h"

【讨论】:

NSLog(@"视图控制器是:%@",_homeController); UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]]; AblumsController *myAlbum = [storyboard instantiateViewControllerWithIdentifier:@"AlbumsControllerIdentifier"]; // myAlbum.typeofParam=2; [_homeController pushViewController:myAlbum 动画:YES]; //我正在使用实例变量去另一个视图控制器......但仍然显示我打印的视图控制器是:(null) AblumsController *myAlbum 是您的HomeController 中的tableview? 我正在使用 homeController 实例去新的 uiviewcontroller 即:[_homeController pushViewController:myAlbum animated:YES];但不工作 不,这是另一个 viewController @tim007 myAlbum.homeController = _homeController;它将如何工作?我没有在 AblumsController 中使用 homeController 实例。我不需要这样。 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]]; AblumsController *myAlbum = [storyboard instantiateViewControllerWithIdentifier:@"AlbumsControllerIdentifier"]; // myAlbum.typeofParam=2; myAlbum.homeController = _homeController;//添加这个 [_homeController pushViewController:myAlbum animated:YES];我在 HomeCategoryRow.m 类中使用的这段代码

以上是关于如何将 UIViewController 实例传递给自定义 UITableCell的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 如何将数据从 UITableViewCell 类传递到 UIViewController

如何通过将类名传递给方法来创建子类 UIViewController?

如何将数据从基于 plist 的 UITableView 传递到 UIViewController

CarbonKit:如何将选项卡数组标题 ID 传递给 UIViewController?

如何以编程方式将 JSON 数组从 UITableViewCell 传递到新的 UIViewController?

iPhone SDK如何将tableview中plist中的选定行传递到UIViewController