0

当按下按钮时,我想推送一个新视图,我需要将一个NSDictionary对象传递给 new DetailViewController,所以方法如下所示:

-(void)displayCourseDetail:(NSDictionary*)dictionary{
    self.detailViewController = [[[DetailViewController alloc]init]initWithDictionary:dictionary];
    [self presentViewController:detailViewController animated:YES completion:nil];
}

但我不知道如何NSDictionary通过这个:

[button addTarget:self action:@selector(displayCourseDetail:) forControlEvents:UIControlEventTouchUpInside];

该按钮是在代码中创建的,因为它是动态的。

UIButton *button=[UIButton buttonWithType:UIButtonTypeCustom];
button.frame=CGRectMake(_StartX+day*_ButtonWidthWorkday, _StartY+course*_ButtonHeightNormal, _ButtonWidthWorkday-_ButtonMargin, _ButtonHeightNormal-_ButtonMargin);

NSDictionary按下按钮时如何将对象传递给特定的视图控制器?

4

2 回答 2

1

您可以使用:

[button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];

然后在action方法中,传递字典:

-(IBAction) buttonClicked:(id)sender{
    ...
    [self performSelector:@selector(displayCourseDetail:) withObject:yourDictionary];
}
于 2013-05-05T03:38:25.357 回答
0

您不能将任何参数添加到由addTarget:action:forControlEvents:. 您需要执行一些逻辑来从头开始创建字典或获取对现有字典的引用displayCourseDetail:。一旦你有了它,你可以将它传递给initWithDictionary你当前传递方法参数的相同方式。

如果没有看到更多您的代码,我无法帮助您,但我想,如果您在创建字典时访问字典,button如果移入displayCourseDetail:也可以。

我注意到,当您DetailViewController拨打电话时,您同时拨打电话initinitWithDictionary:这很可能是不正确的。你应该initWithDictionary:只使用。

于 2013-05-05T03:40:15.893 回答