我理解(我认为)为什么这不起作用,但我不知道如何让它起作用。
我有一个像这样在 viewWillAppear 中调用的方法(为了这个问题,我已经简化了代码):
- (void)viewWillAppearBOOL)animated
{
[self displayHour:0];
}
然后我有一个小的 for 循环在 viewDidLoad 中构建一些按钮:
NSUInteger b = 0;
for (UIButton *hourButton in hourButtons) {
[hourButton setTag:b];
[hourButton setTitle:[NSString stringWithFormat"%lu", (unsigned long)b] forState:UIControlStateNormal];
[hourButton addTarget:self actionselector(showHour forControlEvents:UIControlEventTouchUpInside];
b++;
}
那么对于我的操作:
- (IBAction)showHourid)sender
{
// Logs 0, 1, etc. depending on which button is tapped
NSLog(@"Button tag is: %lu", (long int)[sender tag]);
// This currently throws this error:
// No visible @interface for 'UIView' declares the selector 'displayHour:'
// What I want to do is be able to call this method on
// the main view and pass along the button tag of the
// button that was tapped.
[mainView displayHourlong int)[sender tag]];
}
问题是如何从 showHour: Action 调用 displayHour 到主视图?
如果需要,displayHour方法长这样(简化了,基本更新了主视图上的一些标签和图片 View ):
- (void)displayHourNSUInteger)i
{
// The temperature
hourTemp = [[hourly objectAtIndex:i] valueForKeyPath"temperature"];
// The icon
hourIcon = [[hourly objectAtIndex:i] valueForKeyPath"icon"];
// The precipitation
hourPrecip = [[hourly objectAtIndex:i] valueForKeyPath"precipProbability"];
// SET DISPLAY
[hourTempField setText:hourTemp];
[hourIconFrame setImage:hourIcon];
[hourPrecipField setText:hourPrecip];
}
谢谢!
Best Answer-推荐答案 strong>
代替
[mainView displayHourlong int)[sender tag]];
做:
[self displayHourlong int)[sender tag]];
关于ios - 如何从 UIButton 调用的操作发送方法以查看,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/19203281/
|