0

我正在尝试制作一个包含三列的扑克选择器视图。在每一列中,我都有标准的卡片列表,每张卡片代表一行。如果我在最左列选择“红心王牌”,那么下一列将是标准列表,不包括“红心王牌”。如果我在第二列中选择“梅花 3”,则第三栏将包含标准列表,不包括“红心王牌”和“梅花 3”

有人可以告诉我该怎么做吗?

我当前的代码仅适用于一列,所有三列代表一列,因此不方便发布。

我正在使用NSArray默认列表,并且还使用UIActionSheet.

self.myPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 43 , 320, 480)];
self.myPickerView.delegate = self;
self.myPickerView.dataSource = self;
[self.myPickerView setShowsSelectionIndicator:YES];

// Create done button in UIPickerView
self.myPickerViewToolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 56)];
//  self.myPickerViewToolBar.barStyle = UIBarStyleBlackOpaque;
[self.myPickerViewToolBar sizeToFit];

NSMutableArray *barItems = [[NSMutableArray alloc] init];
UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
[barItems addObject:flexSpace];

UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(pickerDoneClicked)];
[barItems addObject:doneBtn];

[self.myPickerViewToolBar setItems:barItems animated:YES];
self.sheet = [[UIActionSheet alloc] initWithTitle:nil
                                         delegate:self
                                cancelButtonTitle:@"Done"
                           destructiveButtonTitle:nil
                                otherButtonTitles:nil];
}
4

2 回答 2

0

我认为你可以使用 UICollectionViewController 来做到这一点。

这就像使用 UITableView 一样简单。

以下链接可能对您有用。

http://www.raywenderlich.com/22324/beginning-uicollectionview-in-ios-6-part-12

于 2013-04-22T04:51:56.727 回答
0

您需要使用 3 列设置选择器。您需要为每列创建 3 个单独的数组。

然后,您需要实现用于处理行选择的委托方法。如果选定的行用于第一个组件,那么您需要更新第二个和第三个数组以包含除选定对象之外的所有卡片。然后告诉选择器重新加载第二个和第三个组件。

在处理第二个组件的选定行时,您需要更新第三个组件的数组以包括除其他两个选定卡之外的所有卡。然后重新加载第三个组件。

于 2013-04-22T03:13:24.477 回答