[英]How can I add more parameters to the selector called by addTarget:action:forControlEvents:?
當按下按鈕時,我想推送一個新視圖,並且需要將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
對象傳遞給特定的視圖控制器?
您可以使用:
[button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
然后在action方法中,傳遞字典:
-(IBAction) buttonClicked:(id)sender{
...
[self performSelector:@selector(displayCourseDetail:) withObject:yourDictionary];
}
您無法將任何參數添加到由addTarget:action:forControlEvents:
調用的選擇器中。 您需要執行一些邏輯以從頭開始創建字典,或者獲取對displayCourseDetail:
現有字典的引用。 一旦有了它,就可以像當前傳遞方法參數一樣將其傳遞給initWithDictionary
。
如果看不到更多代碼,我將無濟於事,但是我可以想象,如果將button
移到displayCourseDetail:
那么在創建button
時訪問字典也是可以的。
我注意到,在制作DetailViewController
您同時調用了init
和initWithDictionary:
這很可能是不正確的。 您應該僅使用initWithDictionary:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.