0

我是法国人,很抱歉我的英语不好...

我想传递数据NSString *cellSelected。这是我的代码,谢谢你说什么是错的:)

#import "PhotoViewController.h"

@interface PhotoCategoryViewController : UITableViewController

@property (nonatomic, strong) NSArray *categoryName;

@property (nonatomic,strong) NSString *cellSelected;

@end

@implementation PhotoCategoryViewController

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

  UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

  self.cellSelected = cell.textLabel.text;

  NSLog(@"selected cell textLabel = %@",self.cellSelected);

  PhotoViewController *viewcontroller = [[PhotoViewController alloc] init];

  viewcontroller.cellSelected = self.cellSelected;

}

第二类:

#import "PhotoCategoryViewController.h"
   @interface PhotoViewController : UICollectionViewController     <UICollectionViewDataSource>

@property (nonatomic, strong) NSString *cellSelected;

- (void)viewWillAppear:(BOOL)animated
{

  NSLog(@"%@", self.cellSelected);
}

第一个 NSLog 是正确的,但对于第二个(传递的数据),它返回:“nil”... :(

4

2 回答 2

0

欢迎来到 Stackoverflow :)

第二课:

 @property (nonatomic, readwrite, copy) NSString *cellSelected;

您需要指定它打算从外部写入,使用readwrite.
以及copy, 以确保 的值NSString被复制,而不是被引用,这可能会丢失(这部分在过去的一年里让我很头疼:))

于 2014-06-09T16:35:55.860 回答
0

您的代码没有意义,这里有几个问题:

  1. 你是如何展示 PhotoViewController 的?您的代码没有显示它...如果您使用 segue 来呈现视图控制器,那么您将拥有它的两个实例。
  2. 您的 PhotoViewController 类显示了一个@interface 定义,但其中有一个已定义的方法,表明它是一个@implementation。你确定你发布了正确的代码吗?
  3. 您应该对非可变属性使用复制而不是强引用。
  4. 您不需要将 UICollectionViewController 声明为符合 UICollectionViewDatasource 协议,默认情况下它会这样做。
于 2014-06-09T16:37:25.497 回答