prepareForSegue中的自定义对象与viewDidLoad不同

时间:2013-01-28 07:32:32

标签: viewdidload

这是我想要实现的目标: 我以编程方式添加一组自定义对象。这些中的每一个都应该执行现有的segue。在performForSegue中,我设置了destinationViewController的一些属性。

以下是设置: 我有一个自定义对象CustomButton,它具有属性CustomProperty。在我的主视图中,我有一个NSMutableArray,其中填充了这些对象的实例。点击识别器连接到自定义按钮。此外,主视图和另一个视图之间存在一个segue,单击自定义按钮时会执行该视图。我还有一个prepareForSegue,我在那里进行一些处理。

主viewDidLoad看起来像:

- (void)viewDidLoad
{  
    buttons = [[NSMutableArray alloc] init];
    CustomButton *customButton1 = [[CustomButton alloc] init];                

    // Attach touch recognizers
    UITapGestureRecognizer *singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(customButtonPressed:)];
    [customButton1 addGestureRecognizer:singleFingerTap];
    [self.view addSubview:customButton1];

    // Add it to the buttons array
    [self.buttons addObject:customButton1];

    [super viewDidLoad];

    NSLog(@"---------viewDidLoad-----------");
    NSLog(@"count = %u", buttons.count);
    for (id tempButton in buttons)
    {
        NSLog(@"Custom Property = %@", ((CustomButton *)tempButton).customProperty);
    }
}

prepareForSegue看起来像

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{
    NSLog(@"---------prepareForSegue-----------");
    NSLog(@"count = %u", buttons.count);
    for (id tempButton in buttons)
    {
        NSLog(@"Content = %@", ((CustomButton *)tempButton).customProperty);
    }
} 

当我运行此应用程序并调用viewDidLoad时,count和customProperty按预期打印。按下按钮时,将调用prepareForSegue并且计数为1(如预期的那样),但customProperty为null。

知道发生什么事吗?

1 个答案:

答案 0 :(得分:0)

viewDidLoad你正在使用班级CustomButton的对象。但是在prepareForSegue中,您将对象转换为BookButton。我假设,这不是预期的,customProperty是零的原因,因为它是a)未设置和b)BookButton中没有这样的属性。