将数据从 UITableView 传递到 XIB 子视图

Passing data from a UITableView to a XIB Subview

我确定有一个简单的解决方案,但我环顾四周但找不到任何帮助。我正在尝试将数据从 UITableview 传递到子视图。我不想使用 segue,因为我希望 xib 文件出现在与所需数据相同的 viewcontroller 上。 NSLog 按预期输出但未传递到 "nowplayingnib" 视图中的字符串。

ViewController.m

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

SongInfo *song = songsArray[indexPath.row];



NowPlayingNib *nowplayingnib = (NowPlayingNib *)[NowPlayingNib viewFromNib];


[self.view addSubview:nowplayingnib];


nowplayingnib.videoId = song.videoId;

NSLog(@"%@", song.videoId);

}

更新

NowPlayingNib.h

@interface NowPlayingNib : UIView 

@property (strong, nonatomic) NSString *videoId;
@property (strong, nonatomic) NSString *title;

+(id)viewFromNib;


@end

NowPlaying.m

@implementation NowPlayingNib

@synthesize videoId;

-(void)awakeFromNib{


NSLog(@"video id inside nib = %@", self.videoId);

}

+(id)viewFromNib{
ViewController *songinfo = [[[NSBundle mainBundle] loadNibNamed:@"NowPlayingNib" owner:self options:NULL]lastObject];

return songinfo;


}

nowplayingnib.videoId 的类型是什么?

完成@property (nonatomic,strong)并再次检查

重写初始化方法,如:

+(id)viewFromNib{
ViewController *songinfo = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:nil options:NULL]lastObject];

return songinfo;


}

您的输出 NSLog(@"video id inside nib = %@", self.videoId); 是在 awakeFromNib 方法中,但您只是在加载 nib 并将其添加到超级视图后才将值分配给 videoId?