gpt4 book ai didi

ios - 自 IBAction 和发送者

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:15:27 27 4
gpt4 key购买 nike

我是一名新手 iOS 程序员,这是我的问题:我有 mapview 和分段控件,还有 changeMapType 函数,它在 UIControlEventValueChanged 发生时被调用,就像这样

// change map type with segmented control
- (IBAction)changeMapType:(id)sender
{
NSInteger i = [mapTypeControl selectedSegmentIndex];
if (i == 0){
[worldView setMapType:MKMapTypeStandard];
}
if (i == 1) {
[worldView setMapType:MKMapTypeSatellite];
}
if (i == 2) {
[worldView setMapType:MKMapTypeHybrid];
}
}

在 viewDidLoad 中,我想调用此方法来设置第一个 map 类型。

[mapTypeControl setSelectedSegmentIndex:2];
[self changeMapType:nil];

上面的代码可以正常工作,但是下面的代码也可以正常工作

[mapTypeControl setSelectedSegmentIndex:2];
[self changeMapType:self];

那么最后,作为 SENDER 传递什么?哪个是正确的?

最佳答案

概念上,两者都不对,实际上,两者都可以。

sender 是(或者至少应该是)启动操作的 UIControl 实例(在您的情况下是分段控件)。事实上,您应该这样开始您的方法:

- (IBAction)changeMapType:(UISegmentedControl *)sender
{
NSInteger i = [sender selectedSegmentIndex];

// etc.
}

而手动调用时,应该传入分段控件:

[self changeMapType:mapTypeControl];

关于ios - 自 IBAction 和发送者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15289817/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com