UITableViewController子类分离self.tableView和self.view的方法

当一个view上显示的内容能够用一个UITableView实现,可以通过子类化一个UITableViewController控制器,上面提供了一个UITableView对象,不需要自己维护其frame,使用起来还是挺方便的。但是当在该控制器的view上添加其他的视图时,会出现无论如何都会添加的self.tableView上,原因是在UITableViewController子类中,self.view和self.tableView都是同一个对象,都是一个UITableView。本文主要是分离self.tableView和self.view,以达到能够在self.view上添加其他view,方法如下:

1、在- (void)viewDidLoad或者- (void)loadView方法添加如下代码:

    UITableView *tableView = (UITableView *)self.view;

    self.view = [[[UIView alloc] init] autorelease];

    tableView.frame = self.view.bounds;

    self.tableView = tableView;

2、重写self.tableView的get方法和set方法

- (void) setTableView:(UITableView *)tableView {

[self.tableView removeFromSuperview];

[self.view addSubview:tableView];

}

- (UITableView *) tableView {

for (UIView *v in self.view.subviews) {

if ([v isKindOfClass:[UITableView class]]) {

return (UITableView *)v;

}

}

return nil;

}

通过以上方法即可分离UITableViewController子类中self.tableView和self.view了。

时间: 2024-11-11 12:41:29

UITableViewController子类分离self.tableView和self.view的方法的相关文章

iOS 从UITableViewController中分离数据源

之前看objc.io #1 Light View Controllers看到一个很不错的技巧:从UITableViewController中分离数据源,这样可以减小UITableViewController的规模,同时也能让程序有一个比较好的架构. 由于UITableViewController是iOS中使用得最频繁的一个视图控制器,所以这里做下笔记,记录下这个技巧. 首先是故事板(当然也可以用代码 + XIB的组合): 新建一个Cell类,连接故事板中的Outlets,代码如下: #impor

[IOS Tableview] cell自定义view显示错误问题

问题介绍:按照tableviewcell的tag自定义cell的view显示的时候,会出现拖动时显示错误情况. 我做的是一个下载界面,我为了简化问题,就把问题设定为,tag==1的cell已下载,加载时就把已下载的cell的label显示为蓝色.其余默认为黑. 比如我在代码里,想要tag==1的cell的label字体为蓝色,这样写就会出现上下拖动时tag==11的也出现蓝色(视具体情况而定). if([cell.tag==1){ //tag==1就把label显示为蓝色 cell.label.

Java中子类继承了父类的私有属性及方法吗?

最近学习继承,从书中看到子类继承父类,子类拥有父类所有的属性和方法,于是使用程序去验证,发现父类的私有属性和私有方法,子类是不能访问的,当然一些父类的私有属性可能可以通过相应的方法访问到,但是私有的方法似乎不能简单的访问,这里暂不考虑Java反射机制,于是我分析,子类不能继承父类私有的属性及方法,但是分析了内存后,我发现我是错的,在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对象外部放上子类独有的属性,两者合起来形成一个子类的对象.所以所谓的继承使子类拥有父类所有的属性和方法

Android应用自定义View绘制方法手册

背景 这篇迟迟难产的文章算是对2015前半年的一个交代吧,那时候有一哥们要求来一发Android Canvas相关总结,这哥们还打赏了,实在不好意思,可是这事一放就给放忘了,最近群里小伙伴催着说没更新博客,坐等更新啥的,随先有这么一篇Android应用开发超级基础的文章诞生了(因为这种文章最好写哈,就是用熟了就行).不得不说下这么久为何一直没更新博客的原因了,首先遇上了过年,我个人崇尚过节就该放下一切好好陪陪亲人,珍惜在一起的时光:其次今年开年很是蛋疼,不是不顺当就是深深的觉得被坑,所以心情也就

ngui3.5.7 版本Scroll View实现方法

现在网上的教材都是老版本的,现在的版本并没有Drag Panel Contents脚本,所以我对着现在的DEMO琢磨出了实现方法 第一,创建NGUI ui,其他组件不必创建,我只要NGUI这个摄影机,将这个NGUI设置为2D层,下面子组件都属于2D层 创建Scroll View,之后在下面创建Grid把他里面的脚本去掉,添加UICenterOnChild这个脚本,之后在Grid下面创建你要用的组件,在这些组件上添加UIDrag Scroll View和UICenter On Click 还有Bo

Android编程动态创建视图View的方法

在Android开 发中,在Activity中关联视图View是一般使用setContentView方法,该方法一种参数是使用XML资源直接创 建:setContentView (int layoutResID),指定layout中的一个XML的ID即可,这种方法简单.另一个方法是 setContentView(android.view.View),参数是指定一个视图View对象,这种方法可以使用自定义的视图类. 在一些场合中,需要对View进行一些定制处理,比如获取到Canvas进行图像绘制,

继承的基本概念: (1)Java不支持多继承,也就是说子类至多只能有一个父类。 (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法。 (3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承。 (4)子类中定义的成员方法,并且这个方法的名字返回类型,以及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承。 分析以上程

继承的基本概念: (1)Java不支持多继承,也就是说子类至多只能有一个父类. (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法.(3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承.(4)子类中定义的成员方法,并且这个方法的名字返回类型,以及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承. 分析以上程序示例,主要疑惑点是“子类继承父类的成员变量,父类对象是否会实例化?私有成员变量是否会被继承?被继承的成员变量

子类继承父类后想要扩展父类方法

1 >>> class PClass(object): 2 def setInfo(self,sex='Male'): 3 self.gender = sex 4 5 6 >>> class CClass(PClass): 7 def setInfo(self,who): 8 self.name = who 9 PClass.setInfo(self)#子类继承父类后想要扩展父类方法,若仍想保留父类方法可以通过回调 10 11 12 >>> x = C

[转]Android View.onMeasure方法的理解

转自:http://blog.sina.com.cn/s/blog_61fbf8d10100zzoy.html Android View.onMeasure方法的理解 View在屏幕上显示出来要先经过measure(计算)和layout(布局).1.什么时候调用onMeasure方法? 当控件的父元素正要放置该控件时调用.父元素会问子控件一个问题,“你想要用多大地方啊?”,然后传入两个参数——widthMeasureSpec和heightMeasureSpec.这两个参数指明控件可获得的空间以及