按下按钮时,我想推送一个新视图,我需要将NSDictionary
对象传递给新的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
对象传递给特定的视图控制器?
答案 0 :(得分:1)
您可以使用:
[button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
然后在action方法中,传递字典:
-(IBAction) buttonClicked:(id)sender{
...
[self performSelector:@selector(displayCourseDetail:) withObject:yourDictionary];
}
答案 1 :(得分:0)
您无法向addTarget:action:forControlEvents:
调用的选择器添加任何参数。您需要执行一些逻辑来从头开始创建字典,或者在displayCourseDetail:
中获取对现有字典的引用。完成后,可以将其传递给initWithDictionary
,方法与当前传递方法参数的方式相同。
如果没有看到更多的代码,我无法帮助你,但我想如果你在创建button
时访问字典,如果移入displayCourseDetail:
也会有用。 / p>
我注意到,当您制作DetailViewController
时,您同时拨打init
和initWithDictionary:
,这很可能不正确。您应该只使用initWithDictionary:
。