ios - 如何在 UIPickerView 中为两个不同的组件显示两种不同的对象类型?

标签 ios objective-c uiview uipickerview

我有一个包含两个组件的选择器。在组件 0 (kCardComponent) 中,我希望出现 NSStrings。在组件 1 (kSuitComponent) 中,我想要 UIView。这是我的选择器 View 中的代码。我假设程序崩溃了,因为它在应该在此方法中返回 UIView 时返回了 NSString

- (UIView *)pickerView:(UIPickerView *)pickerView
        viewForRow:(NSInteger)row
      forComponent:(NSInteger)component reusingView:(UIView *)view {
if (component == kSuitComponent) {
    UIImage *image = self.suitImages[row];
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    return imageView;
}
else
    return (UIView*)self.cardNumber[row];
}

我尝试创建另一个选择器 View -(NSString*)pickerView,但这不起作用。我该怎么办?

最佳答案

您不能从此委托(delegate)方法返回字符串,只能返回 View 。由于您需要一个组件的 View ,因此您也需要所有组件的 View 。您需要做的是创建一个 UILabel 并将其文本设置为您拥有的字符串。

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
    if (component == kSuitComponent) {
        UIImage *image = self.suitImages[row];
        UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
        return imageView;
    } else {
        NSString *text = self.cardNumber[row];
        UILabel *label = ... // create label
        label.text = text;
        return label;
    }
}

关于ios - 如何在 UIPickerView 中为两个不同的组件显示两种不同的对象类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15399436/

相关文章:

ios - UIView.animate 和完成问题

ios - iPad 上的 NSLayoutConstraint SIGABRT

objective-c - 创建一个空对象有什么用吗? ( Objective-C )

objective-c - 隐藏自动布局 UIView : How to get existing NSLayoutConstraint to update this one

objective-c - iOS编程: Understand UINavigationController and the RootViewController

ios - 将 GCD 与 TableView 一起使用会导致间歇性断言

ios - 多次调用 removeFromSuperView 会导致崩溃/错误吗?

ios - 使用 GoogleService-Info.plist 配置适用于 iOS 应用程序的 Google 分析时出错

ios - Swift CoreData子实体无法通过父实体访问

ios - 清除 Storyboard 中使用的标签文本