如何在一个tableview里面使用多个tableview自定义celll

在IOS中,在storyborad中定义tableview的cell,然后在代码中加载的具体方法怎么做?-中国学网-中国IT综合门户网站
> 在IOS中,在storyborad中定义tableview的cell,然后在代码中加载的具体方法怎么做?
在IOS中,在storyborad中定义tableview的cell,然后在代码中加载的具体方法怎么做?
转载 编辑:李强
为了帮助网友解决“在IOS中,在storyborad中定义”相关的问题,中国学网通过互联网对“在IOS中,在storyborad中定义”相关的解决方案进行了整理,用户详细问题包括:看HM教程记得有一处是这样子做的。,然后布局好了之后再给一个标识符,希望指点一下!,然后好像是(不知道有没有记错)直接在上面对cell布局!!,就是在故事板中拖入一个tableView。 不知道谁还记得具体步骤!,最后再在代码中的数据源代理方法中加载这个cell但是具体流程和做法实在忘记了。,具体解决方案如下:解决方案1:<解决方案2:有没有详细的步骤?比方说故事板中还需要做什么样的设置?有没有相关的网页有这方面的教程?如果有的话方便帮忙找找吗?谢谢。通过对数据库的索引,我们还为您准备了:问:是这样的,在要跳出的view中使用如下代码跳出: UIStoryboard *board = ...答:对象的本质是:功能的封装及状态的维护,说白了就是代码和数据。虽然使用同一个nib来创建出来的实例,但它们却不是同一个指针指向的对象。如果想要区分完全可以通过添加属性如instanceName 在创建时指定这个instanceName为不同的值就可以了 a.in...===========================================问:ios开发 我在storyboard中,在一开始的基础上,又拖了一个ViewContronll...答:你直接新建一个object-c文件就OK,父类选择UIViewController,新建好之后,在你新加的View的Files owner的属性里面选择属性页面,然后将view的控制类选择为新建的Controller类文件就OK===========================================问:在线等经验者答:这个和项目有关系,不过一般自带的能满足大部分的项目要求===========================================问:问题1ios6 使用storyBoard 开发的app如何兼容 ios5.0查了下 网上如果要...答:1、关闭自动布局 autolayout 2、在storyBoard的面板scene上再拉一个view控件,所有的控件都放在view里面。(可以更好的与navidation兼容)===========================================问:问题1ios6 使用storyBoard 开发的app如何兼容 ios5.0查了下 网上如果要...答:当然可以。。。 apple 官方现在推荐 使用 sB===========================================问:问题1ios6 使用storyBoard 开发的app如何兼容 ios5.0查了下 网上如果要...答: 为了理解如何实现模糊,你需要尝试在一款以新格林童话故事为蓝本的App上添加合适的模糊效果,这款App叫做Grimm。 该应用为用户提供了一系列的童话故事,当用户点开某个童话时,它就会在屏幕上显示完整的故事内容。用户可以自定义显示的字体、文...===========================================问:问题1ios6 使用storyBoard 开发的app如何兼容 ios5.0查了下 网上如果要...答:凡是维护过中型项目的iOS工程师都应该有过类似的体验:ViewController代码繁重、功能复杂、维护困难,整个工程寥寥几个ViewController就完成了整个项目的开发。每个控制器中都囊括了所有的页面布局、委托代理、网络请求、数据库操作和核心功能,...===========================================问:我的6怎么今天一天都上不了APP story,看了别的5和4s都可以上,是不是iO...答:Dns 改成8.8.8.8就可以了!===========================================问:谢谢了啊答:描述的太模糊了~ "在后台怎么通过x:Name获得该控件(Storyborad)" 这句话没理解. 1、在定义Storyborad是时候给个名称(x:Name) 就可以在代码中直接控制,和其他类没什么区别。 例: xaml定义: ,代码中访问: aaa.Pause() 2、Storyborad不属于任何U...===========================================
本文欢迎转载,转载请注明:转载自中国学网: []
用户还关注
可能有帮助JavaFX学习之TableView -
- ITeye技术网站
博客分类:
&& TableView表
&& TableColumn列
构建一个表主要有TableView,TableColumn,ObservableList,Bean。
添加列table.getColumns().addAll(firstNameCol, lastNameCol, emailCol);
ObservableList里面是存放的数据
table.setItems(observableList);添加数据
observableList里面一般是存放的Bean,列与Bean之间建立联系,从而获取值。
列与Bean之间建立联系:
emailCol.setCellValueFactory(new PropertyValueFactory&Person, String&("email"));通过cell值工厂建立与Bean的联系。它这里并不需要知道你是传了什么Bean,它只需要通过“email”反射成getEmail()方法去Bean里面获得值,所以Bean属性定义的名字不需要与它相同,只需要有getEmail()方法。
firstNameCol.setCellValueFactory(new Callback&TableColumn.CellDataFeatures&Person, String&, ObservableValue&String&&() {
public ObservableValue&String& call(CellDataFeatures&Person, String& arg0) {
// return new
// SimpleStringProperty(arg0.getValue(),"sd",arg0.getValue().getFirstName());
// //bean, bean的名称,值
return new SimpleStringProperty(arg0.getValue().getFirstName());
// 这样你可以不建立值与对象的映射关系。
arg0.getValue()等于这里的person。若是你observableList.add(list),则这arg0.getValue()等于list。
SimpleStringProperty(arg0.getValue(),"sd",arg0.getValue().getFirstName());
这里的意思既是arg0.getValue()既是你observableList.add的值,“sd”为bean取得名字,arg0.getValue().getFirstName()既是你该列想要获得的值。如果是list则arg0.getValue().get(j)则为该列的每行赋值了。
cell里面不仅只存放文字,还可以存放其它Node:
firstNameCol.setCellFactory(new Callback&TableColumn&Person, String&, TableCell&Person, String&&() {
public TableCell&Person, String& call( // 单元格内容
TableColumn&Person, String& arg0) {
return new TableCell&Person, String&() {
protected void updateItem(final String str,boolean arg1) {
super.updateItem(str, arg1);
if (arg1) {
setText(null);
setGraphic(null);
setText(str);
setGraphic(new CheckBox());
和TreeCell使用一样,可以对cell里面弄重新构造。
lastNameCol.setCellFactory(TextFieldTableCell.forTableColumn());有一些默认的构造,就不需要自己去new TableCell了。
TableColumn设置sort的3个方法
firstNameCol.setSortNode(new Text("a")); // 默认是表头上的小图标三角形,可以改变
firstNameCol.setSortable(true); // 设置可排序
firstNameCol.setSortType(SortType.DESCENDING);设置升降序
若要在一个column中包含多个column,则可以调用TableColumn的getColumns().setAll(TableColumn...);
firstNameColumn = new TableColumn&Person, String&("First");
firstNameColumn.setCellValueFactory(new PropertyValueFactory&Person, String&("firstName"));
firstNameColumn.setCellFactory(TextFieldCellFactory.&Person&forTableColumn());
lastNameColumn = new TableColumn&Person, String&("Last");
lastNameColumn.setCellValueFactory(new PropertyValueFactory&Person, String&("lastName"));
lastNameColumn.setCellFactory(TextFieldCellFactory.&Person&forTableColumn());
nameColumn = new TableColumn&Person, String&("Name");
nameColumn.getColumns().setAll(firstNameColumn, lastNameColumn);
table的单元之间有明显的横线分割,可以通过css去掉。
去掉行横线
.table-view .table-row-cell {
-fx-background-insets: 0;
若想同时去掉没有数据的竖线
.table-row-cell:empty .table-cell {
-fx-border-width: 0
若想对行进行操作,可以通过setRowFactory。如下面对行的双击进行操作
tableView.setRowFactory(new Callback&TableView&T&, TableRow&T&&() {
public TableRow&T& call(TableView&T& param) {
return new TableRowControl();
class TableRowControl extends TableRow&T& {
public TableRowControl() {
this.setOnMouseClicked(new EventHandler&MouseEvent&() {
public void handle(MouseEvent event) {
if (event.getButton().equals(MouseButton.PRIMARY)
&& event.getClickCount() == 2
&& TableRowControl.this.getIndex() & tableView.getItems().size()) {
//doSomething
往table中插入数据,table中的数据显示,是根据你的itemlist来的,list里面的数据排什么序,那table也就排什么序。若添加一条新数据,直接往list里面加。而list又提供按位置加,那么table显示就是按位置加了。
tableView.getItems().add(selectedRow, newRecord);
newRecord一个新的对象,没赋值。
自定义TableCell一般都是重写updateItem方法。如果有需要在编辑做操作,可以重写startEdit,cancelEdit
public void startEdit() {
if (!this.getTableRow().isVisible()) {
super.startEdit();
if (checkBox == null) {
createCheckBox();
setText(null);
setGraphic(checkBox);
public void cancelEdit() {
super.cancelEdit();
setText(getItem().toString());
setGraphic(null);
可以看到,一旦点击编辑状态,则改变Cell里面的内容。一离开编辑就换成原本cell里面的内容。这样就可以显示的时候就是字符串,而编辑的时候就可以弄一个控件,如日历。
获取选中的TableColumn
table.getSelectionModel().getSelectedCells().get(0).getTableColumn()
table自带方法可以过滤column,也就是只显示哪些column
table.setTableMenuButtonVisible(true);
设置为true后,会出现一个加号的column,它可以对column进行过滤
table默认是只能选着一行的,如果想选着多行,设置SelectionMode,此时可以对选中的多个进行监听。
ListChangeListener&Person& indicesListener = new
ListChangeListener&Person&() {
@Override public void onChanged(Change&? extends Person& c) {
while (c.next()) {
selectionUpdated(c.getAddedSubList(), c.getRemoved());
tableView.getSelectionModel().getSelectedItems().addListener(indicesListener);
tableView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
tableView.getSelectionModel()得到的是个抽象类SelectionModel,它有二个子类MultipleSelectionModel, SingleSelectionModel。它们主要处理选择事件,可以看它们的方法:
getSelectedIndex()
getSelectedItem()
selectedIndexProperty()
selectedItemProperty()
获取选中的item和索引。一个是获取其值,另一个是获取封装属性,用于bind变化。
select(int index)
select(T obj)
selectFirst()
selectLast()
clearSelection()
clearSelection(int index)
这些方法都是操作选中。
setSelectionMode(SelectionMode.MULTIPLE);
selectIndices(int index, int... indices)
selectRange(int start, int end)
MultipleSelectionModel则提供多选功能,并且提供多选的一些方法。
select(int row, TableColumn&S,?& column)
selectAboveCell()
selectBelowCell()
selectLeftCell()
selectRightCell()
setCellSelectionEnabled(boolean value)
TableView.TableViewSelectionModel&S&是继承了MultipleSelectionModel,主要针对table的选中事件提供了一些方法。
这里有很多javafx的小游戏,一个高手写的
这里有个javafx学习的中文网站,我把内容都丢那上面去了。
/
浏览: 45382 次
来自: 湖南
引用[img][/img][url][/url][b][/b] ...
写了不少, 顶 1下收藏,3k 浏览
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
利用xib文件自定义一个Table Cell,如何实现点击该Cell切换View Controller?
因为是使用xib文件自定义Table Cell,所以无法在storyboard中通过拖拽建立segue来实现View Controller的切换。
现在知道Table Cell有个方法TableView:didSelectRowAtIndexPath方法在点击cell后执行。但是不清楚如何在不使用segue的情况下具体实现一个View Controller的Push或者Modal。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
在那个tableView的delegate里实现TableView:didSelectRowAtIndexPath, 在这个方法里可以初始化想要的push的view controller:
'''objectivec
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"%@", self.data[indexPath.row]);
// 初始化view controller, 可能需要使用到当前行的数据
UIViewController *nextViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"ViewControllerIdentifier"];
// 如果是要push到navigation controller里的话
[self.navigationController pushViewController:nextViewController animated:YES];
// 如果是要使用modal view的话
[self presentViewController:nextViewController animated:YES completion:^{
// complete
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
楼上这个答案是可行的,但是符合题意的答案应该是在storyboard里面建立一个prototype cell,然后就可以把prototype cell拖到下一个VC上了,效果等同于上面的代码
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
楼上的方案是可行的
同步到新浪微博
不要错过该问题的后续解决方案
如果你没找到答案,记得登录关注哦,大家会尽全力帮你解决的 ^___^
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
举报理由:
推广(招聘、广告、SEO 等)方面的内容
带有人身攻击、辱骂、仇恨等违反条款的内容
与已有问题重复(请编辑该提问指向已有相同问题)
内容质量差,或不适合在本网站出现
答非所问,不符合答题要求
其他原因(请补充说明)
补充说明:UITableViewCell的使用——自定义tableView视图 - 郝旭的博客 - ITeye技术网站
博客分类:
视图需要我们自己去定义样式时用到了TableViewCell组件,效果如下
首先创建View Based App工程,在.xib文件中拖入一个Table View,前面我们说到了,这里就不再重复,注意连接协议和两个必须方法的实现。完成.h中代码
#import &UIKit/UIKit.h&
@interface TableViewCellViewController : UIViewController
&UITableViewDelegate,UITableViewDataSource&{
IBOutlet UITableView *tV
@property (nonatomic,retain)UITableView *tV
@end
完成.m中代码
#import "TableViewCellViewController.h"
#import "MyCell.h"
@implementation TableViewCellViewController
@synthesize tV
- (void)viewDidLoad {
[super viewDidLoad];
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
- (void)dealloc {
[tView release];
[super dealloc];
-(NSInteger) tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier = @"CustomCellIdentifier";
MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"mycell" owner:self options:nil];
cell = [array objectAtIndex:0];
[cell setSelectionStyle:UITableViewCellSelectionStyleGray];
[[cell lable] setText:@"31"];
[[cell lable1] setText:@"Raul"];
[[cell myImage] setImage:[UIImage imageNamed:@"3316.jpg"]];
- (CGFloat)tableView:(UITableView *)atableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
return 120;
@end
若不需要cell则改为:
static NSString *CellIdentifier2 = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier2];
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier2] autorelease];
cell.textLabel.text =@"CCCCCCCC";
[cell.textLabel setFont:[UIFont fontWithName:@"Helvetica" size:16.0f]];
// cell.accessoryView=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"sign_10x12.png"]];
cell.selectionStyle = UITableViewCellSelectionStyleB
[cell.textLabel setTextColor:[UIColor colorWithRed:0/255.0 green:106/255.0 blue:166/255.0 alpha:1.0]];
下面我们新建一个类,注意subclass选择UITableViewCell,名称为MyCell,生成之后再创建相应的xib文件
双击MyCell.xib,将Table View Cell拖入主窗口中,并且删除原主窗口中的View图标
在.h文件中完成代码
#import &UIKit/UIKit.h&
@interface MyCell : UITableViewCell {
IBOutlet UILabel *
IBOutlet UILabel *lable1;
IBOutlet UIImageView *myI
@property(nonatomic,retain) UILabel *
@property(nonatomic,retain) UILabel *lable1;
@property (nonatomic,retain) UIImageView *myI
@end
在.m中完成代码
#import "MyCell.h"
@implementation MyCell
@synthesize lable,lable1,myI
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
if ((self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])) {
// Initialization code
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
- (void)dealloc {
[myImage release];
[lable release];
[super dealloc];
最后我们看一下MyCell.xib中的连接,按住Ctrl拖入将要显示区域的文字和图片找到相应的接口即可。(注意:是myCell和文字和图片连接,不是file’s owner和文字和图片连接,我又犯这个错误了)
浏览 44586
浏览: 62908 次
来自: 北京

我要回帖

更多关于 tableview cell 间距 的文章

 

随机推荐