这是我想要实现的目标:
我以编程方式添加一组自定义对象。这些中的每一个都应该执行现有的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。
知道发生什么事吗?
答案 0 :(得分:0)
在viewDidLoad
你正在使用班级CustomButton
的对象。但是在prepareForSegue
中,您将对象转换为BookButton
。我假设,这不是预期的,customProperty
是零的原因,因为它是a)未设置和b)BookButton
中没有这样的属性。