ios UiPickerView 与 CountryPicker 类

Posted

技术标签:

【中文标题】ios UiPickerView 与 CountryPicker 类【英文标题】:ios UiPickerView with CountryPicker class 【发布时间】:2014-03-08 10:38:26 【问题描述】:

我正在尝试从 https://github.com/nicklockwood/CountryPicker 添加 UiPickerView 类 我想在我的 viewController 中使用故事板,但是尽管 pickerView 显示了国家,但委托方法永远不会被调用。 这是我所做的: 我导入了 CountryPicker 文件夹和 Flags 文件夹,在故事板控制器中我添加了一个 UiPickerView 并将其分配给 CountryPicker 类。 ViewController.h 和 .m 文件与示例完全相同。 我找不到我缺少的东西。 我也尝试初始化对象并从我的 ViewController.m 文件中调用 setSelectedCountry 方法,但它也没有做任何事情。 ViewController.h

#import <UIKit/UIKit.h>
#import "CountryPicker.h"

@interface ViewController : UIViewController <CountryPickerDelegate>

@end

ViewController.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad

 [super viewDidLoad];
 CountryPicker *picker = [[CountryPicker alloc] init];
 [picker.delegate self];
 [picker setSelectedCountryCode:@"US" animated:YES];


- (void)countryPicker:(__unused CountryPicker *)picker didSelectCountryWithName:(NSString *)name code:(NSString *)code

 NSLog(@"country: %@",name);



@end

【问题讨论】:

故事板上是否已经绘制了选择器?您在viewDidLoad 中分配的那个没有被添加为子视图? 是的,它已经使用自定义类 (CountryPicker) 绘制在情节提要上 【参考方案1】:

您需要从情节提要创建一个 IBOutlet 到您的代码Apple Docs

删除您在 viewDidLoad 中创建新选择器的代码。

然后对于您创建的新 IBOutlet,将 self 设置为委托,因此如果您的出口被称为 picker 您的 viewDidLoad 应该如下所示:

- (void)viewDidLoad

    [super viewDidLoad];
    self.picker.delegate = self;
    [self.picker setSelectedCountryCode:@"US" animated:YES];

【讨论】:

以上是关于ios UiPickerView 与 CountryPicker 类的主要内容,如果未能解决你的问题,请参考以下文章

iOS7 UIPickerView 的奇怪行为与 UIImage 作为自定义视图,任何官方信息?

iOS UIPickerView的使用

iOS 7 UIPickerView 非选中行曲率修改多个组件

如何在 iOS 14 中更改 UIPickerView 选择的色调颜色?

Swift 中的第一个 iOS 应用程序 - UIPickerView 中的问号

iOS核心笔记——UIPickerView