Iphone 将UIPickerView添加到UITableViewCell
我想将UIPickerView添加到UITableViewCell。现在我只得到一扇黑色的窗户。有人能给我解释一下将UI对象子类化到单元格的概念吗?例如:我们什么时候将单元格作为委托和数据源委托?谢谢 编辑:这是我现在正在做的代码Iphone 将UIPickerView添加到UITableViewCell,iphone,xcode,uitableview,storyboard,uipickerview,Iphone,Xcode,Uitableview,Storyboard,Uipickerview,我想将UIPickerView添加到UITableViewCell。现在我只得到一扇黑色的窗户。有人能给我解释一下将UI对象子类化到单元格的概念吗?例如:我们什么时候将单元格作为委托和数据源委托?谢谢 编辑:这是我现在正在做的代码 case 1: { cell = [tableView dequeueReusableCellWithIdentifier:@"groups"]; if (cell == nil) { cell = [[UI
case 1: {
cell = [tableView dequeueReusableCellWithIdentifier:@"groups"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"groups"];
}
/*NSString *myGroupDetail = [_groupArray objectAtIndex:indexPath.row];
NSLog(@"the group detail label is %@",myGroupDetail);
cell.textLabel.text = myGroupDetail;
*/
[cell addSubview:_groupPicker];
break;
}
组是我想要选取器视图的部分,我从数组中获取数据。
您必须在tableviewdelegate的cellForRow方法中分配并初始化pickerview。我会给你画草图=)如果你用谷歌搜索一下,如何初始化单元格本身应该不难找到;-) 更新:我目前在git方面遇到问题,因此我将一个示例项目上载到我的私人服务器: github: yu可以根据需要修改和使用代码=)
sebastian您必须在tableviewdelegate的cellForRow方法中分配并初始化pickerview。我会给你画草图=)如果你用谷歌搜索一下,如何初始化单元格本身应该不难找到;-) 更新:我目前在git方面遇到问题,因此我将一个示例项目上载到我的私人服务器: github: yu可以根据需要修改和使用代码=)
塞巴斯蒂安嗯,我从来没有这样做过 它是否必须位于单元格中,或者是否可以使用表的页眉或页脚视图进行此操作?(我不建议使用节页眉/页脚视图。) 假设它位于UITableViewCell内。 是的,我个人会将UITableViewCell子类化。我经常这么做。在这种情况下,单元格对象可以是选择器的数据源委托。为此,UITableViewCell的子类(假设您将其命名为MyTableViewCell)需要满足相关协议。可以在MyTableViewCell的init方法(initWithStyle)中以编程方式添加该UIPickerView。对于表格单元格内的布局,应覆盖方法layoutSubviews。如果你的应用程序可以旋转到风景和肖像方向,或者如果你的应用程序也被设计成在iPad上运行,那么这个方法应该动态地考虑表的边界。(屏幕或windwo边界通常用于hiere,但在iPad上的拆分主视图或弹出视图中显示表格时,不会保存。) 严格来说,MyTableViewCell不应该是数据源委托,因为它是一个视图元素,视图对象不应该管理MVC设计模式中的任何业务逻辑。更智能的方法是为您的表视图单元格实现一些专用的视图控制器,它满足协议并被指定为代理。然而,这两种方法都能奏效。如果它是sell中唯一的picker视图,那么即使不标记UIPickerView,也可以轻松地使用UITableViewController子类 子类化UITableViewCell的另一种方法是在tableViewController的CellForRowatineXpath方法中创建UIPickerView。这对于单方向应用程序来说很好。但是,您可以将其设置为自动在UIPickerView中重新排列其位置
在任何情况下,当您的表视图不再具有相同的高度时,都应该覆盖UITableViewController的heightForRowAtIndexPath方法。如果它们仍然具有相同的高度,则可以简单地设置UITableView的rowHeight属性 嗯,我从来没有这样做过 它是否必须位于单元格中,或者是否可以使用表的页眉或页脚视图进行此操作?(我不建议使用节页眉/页脚视图。) 假设它位于UITableViewCell内。 是的,我个人会将UITableViewCell子类化。我经常这么做。在这种情况下,单元格对象可以是选择器的数据源委托。为此,UITableViewCell的子类(假设您将其命名为MyTableViewCell)需要满足相关协议。可以在MyTableViewCell的init方法(initWithStyle)中以编程方式添加该UIPickerView。对于表格单元格内的布局,应覆盖方法layoutSubviews。如果你的应用程序可以旋转到风景和肖像方向,或者如果你的应用程序也被设计成在iPad上运行,那么这个方法应该动态地考虑表的边界。(屏幕或windwo边界通常用于hiere,但在iPad上的拆分主视图或弹出视图中显示表格时,不会保存。) 严格来说,MyTableViewCell不应该是数据源委托,因为它是一个视图元素,视图对象不应该管理MVC设计模式中的任何业务逻辑。更智能的方法是为您的表视图单元格实现一些专用的视图控制器,它满足协议并被指定为代理。然而,这两种方法都能奏效。如果它是sell中唯一的picker视图,那么即使不标记UIPickerView,也可以轻松地使用UITableViewController子类 子类化UITableViewCell的另一种方法是在tableViewController的CellForRowatineXpath方法中创建UIPickerView。这对于单方向应用程序来说很好。但是,您可以将其设置为自动在UIPickerView中重新排列其位置
在任何情况下,当您的表视图不再具有相同的高度时,都应该覆盖UITableViewController的heightForRowAtIndexPath方法。如果它们仍然具有相同的高度,则可以简单地设置UITableView的rowHeight属性 我已经更新了我的问题。。你建议我做什么?谢谢你的回复。塞巴斯蒂安链接的例子对我来说很好。它是为只有一个单元格的表而设计的。试想一下你的表有点复杂。这意味着示例中cellForRowAtIndexPath的内容进入“案例1”块。你的身高是多少
...(tableView *)... cellForRowAtIndexPath... {
if(indexPath.row == pickerRow){
UIPickerView *pickerView = [[UIPickerView alloc]init];
cell = ... // alloc and initialize a cell
cell addSubview:pickerView];
}
else{ // your other cells }
return cell;
}