0

这是我想要实现的目标:我以编程方式添加一组自定义对象。这些随时可用的每一个都应该执行现有的转场。在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 时,计数和 customProperty 会按预期打印。按下按钮 prepareForSegue 被调用并且计数为 1(如预期的那样)但 customProperty 为空。

知道发生了什么吗?

4

1 回答 1

0

在您viewDidLoad的工作中,您正在使用 class 的对象CustomButton。但是在prepareForSegue您将对象转换为BookButton. 我认为,这不是故意的,原因customProperty是零,因为它是 a) 未设置和 b) 中没有这样的属性BookButton

于 2013-01-31T22:06:56.407 回答