0

我的视图上有两个容器视图,试图模仿左侧的拆分视图控制器 tableview 和右侧的详细视图。在 master 上使用didselectrow 时tableview,详细视图应显示一些详细信息

问题是当我将数据传递给详细视图控制器实例时,它总是返回 null。

在主人:

@property (nonatomic,strong) LogDetailViewController *wods;
UIStoryboard*  sb = [UIStoryboard storyboardWithName:@"MainStoryboard"
                                                  bundle:nil];
    self.wods= [sb instantiateViewControllerWithIdentifier:@"LogDetailViewController"];
//also tried self.wods= [[LogDetailViewController alloc] init];
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
     //one of the if else method rest of it was too long
     else if ([indexPath section]==1){
        GIRLS *girls =[self.girlsList objectAtIndex:indexPath.row];
        self.wods.girls = girls;
        self.wods.section=1;
        [[NSNotificationCenter defaultCenter] postNotificationName:@"refreshLOGDetails" object:nil];
    }
}

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

详细地:

@property  int section;
@property (nonatomic, strong) GIRLS *girls;
//refresh notification
extern NSString * const NOTIF_refreshLOGDetails;
@synthesize section;
@synthesize girls;

- (void)refreshLOGDetails:(NSNotification *)notif
{
    NSLog(@"Notification refreshLOGDetails works");
    [self configureView];
}
- (void)configureView
{  
 //also tried self.girls and self.section 
  NSLog(@"Section is %i",section);
  NSLog(@"configure view object %@",girls);

}

输出:

Notification refreshLOGDetails works
Section is 0
configure view object (null)

我做错了什么?为什么我得到空值?

4

1 回答 1

0

我认为问题在于您在实例化 LogDetailViewController 或使用 alloc init 时创建了一个新实例。如果您在故事板的容器视图中将它们设置为控制器,那么您需要引用在那里创建的控制器,而不是创建新控制器。您可以使用 self.parentViewController 来获取对包含容器视图的控制器的引用。self.parentViewController.childViewControllers 将为您提供一个包含 master 和 detail 的数组——您只需要从该数组中获取正确的数组并将其返回即可。

于 2013-02-08T21:26:09.757 回答