簡體   English   中英

如何將更多參數添加到由addTarget:action:forControlEvents:調用的選擇器?

[英]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您同時調用了initinitWithDictionary:這很可能是不正確的。 您應該僅使用initWithDictionary:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM