iOS 怎么制定一个全局的UInavagation 使之能在UIView UITableViewCell 里面也能够获取到na vagation
展开全部
1.新建工程名为SampleTable , File->New->Project ->single View Application -> next
2.添加UITableViewDataSource,UITableViewDelegate协议
[cpp] view plain copy
#import <UIKit/UIKit.h>
@interface STViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>
@property(strong,nonatomic) NSArray *listData;
@property(strong,nonatomic)UITableView *tableView;
@property(strong,nonatomic)UITableViewCell *tableViewCell;
@end
声明了一个存放数据的数组和用于显示单元格的两个对象
2.在@implementation STViewController后面添加上
@synthesize listData=_listData;
@synthesize tableView = _tableView;
@synthesize tableViewCell =_tableViewCell
viewDidLoad中实现对界面初始化工作,UITableView有两种风格,
UITableViewStylePlain 默认风格,最常见的
UITableViewStyleGrouped 圆角矩形风格
[cpp] view plain copy
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//初始化表格
self.tableView = [[UITableView alloc]initWithFrame:self.view.frame style:UITableViewStylePlain];
// 设置协议,意思就是UITableView类的方法交给了tabView这个对象,让完去完成表格的一些设置操作
self.tableView.delegate=self;
self.tableView.dataSource=self;
//把tabView添加到视图之上
[self.view addSubview:self.tableView];
// 存放显示在单元格上的数据
NSArray *array = [NSArray arrayWithObjects:@"张三",@"张四",@"张五",@"李三",@"李四",@"李五",@"李六",@"王三",@"王四",@"王五",@"王六",@"王七",@"王八",@"王九",@"王十", nil];
self.listData = array;
}
3.视图上显示单元格的内容以及一些数据都是都是属性都是依赖于协议的代理方法
[cpp] view plain copy
//返回多少个section
-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
[cpp] view plain copy
//返回行数,也就是返回数组中所存储数据,也就是section的元素
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [self.listData count];
}
UITableView每一行都有一个UITableViewCell的实例表示,它也继承UIView,也就是每一行又拥有一个子视图,如果是大型表格,这样开销就非常大,所以就有了单元格的重用;当一部分单元格滚出屏幕后,他们被放在一个可重用的单元序列之中。如果系统运行比较慢,表视图就会从序列中删除这些单元,释放空间,如果有储存空间,表视图就会重新获取这些单元,以后面使用;
[cpp] view plain copy
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// 声明静态字符串型对象,用来标记重用单元格
static NSString *TableSampleIdentifier = @"TableSampleIdentifier";
// 用TableSampleIdentifier表示需要重用的单元
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:TableSampleIdentifier];
// 如果如果没有多余单元,则需要创建新的单元
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:TableSampleIdentifier];
}
else {
while ([cell.contentView.subviews lastObject ]!=nil) {
[(UIView*)[cell.contentView.subviews lastObject]removeFromSuperview];
}
}
// 获取当前行信息值
NSUInteger row = [indexPath row];
// 填充行的详细内容
cell.detailTextLabel.text = @"详细内容";
// 把数组中的值赋给单元格显示出来
cell.textLabel.text=[self.listData objectAtIndex:row];
// cell.textLabel.backgroundColor= [UIColor greenColor];
// 表视图单元提供的UILabel属性,设置字体大小
cell.textLabel.font = [UIFont boldSystemFontOfSize:40.0f];
// tableView.editing=YES;
/*
cell.textLabel.backgroundColor = [UIColor clearColor];
UIView *backgroundView = [[UIView alloc] initWithFrame:cell.frame];
backgroundView.backgroundColor = [UIColor greenColor];
cell.backgroundView=backgroundView;
*/
// 设置单元格UILabel属性背景颜色
cell.textLabel.backgroundColor=[UIColor clearColor];
// 正常情况下现实的图片
UIImage *image = [UIImage imageNamed:@"2.png"];
cell.imageView.image=image;
// 被选中后高亮显示的照片
UIImage *highLightImage = [UIImage imageNamed:@"1.png"];
cell.imageView.highlightedImage = highLightImage;
return cell;
}
注释内容中有这两个设置表视图背景颜色的属性方法,具体了解可以看这个博客http://haoxiang.org/2010/12/uitableviewcell-background/ 讲的比较详细
[cpp] view plain copy
cell.textLabel.backgroundColor= [UIColor greenColor];
[cpp] view plain copy
cell.textLabel.backgroundColor = [UIColor clearColor];
UIView *backgroundView = [[UIView alloc] initWithFrame:cell.frame];
backgroundView.backgroundColor = [UIColor greenColor];
cell.backgroundView=backgroundView;
2.添加UITableViewDataSource,UITableViewDelegate协议
[cpp] view plain copy
#import <UIKit/UIKit.h>
@interface STViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>
@property(strong,nonatomic) NSArray *listData;
@property(strong,nonatomic)UITableView *tableView;
@property(strong,nonatomic)UITableViewCell *tableViewCell;
@end
声明了一个存放数据的数组和用于显示单元格的两个对象
2.在@implementation STViewController后面添加上
@synthesize listData=_listData;
@synthesize tableView = _tableView;
@synthesize tableViewCell =_tableViewCell
viewDidLoad中实现对界面初始化工作,UITableView有两种风格,
UITableViewStylePlain 默认风格,最常见的
UITableViewStyleGrouped 圆角矩形风格
[cpp] view plain copy
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//初始化表格
self.tableView = [[UITableView alloc]initWithFrame:self.view.frame style:UITableViewStylePlain];
// 设置协议,意思就是UITableView类的方法交给了tabView这个对象,让完去完成表格的一些设置操作
self.tableView.delegate=self;
self.tableView.dataSource=self;
//把tabView添加到视图之上
[self.view addSubview:self.tableView];
// 存放显示在单元格上的数据
NSArray *array = [NSArray arrayWithObjects:@"张三",@"张四",@"张五",@"李三",@"李四",@"李五",@"李六",@"王三",@"王四",@"王五",@"王六",@"王七",@"王八",@"王九",@"王十", nil];
self.listData = array;
}
3.视图上显示单元格的内容以及一些数据都是都是属性都是依赖于协议的代理方法
[cpp] view plain copy
//返回多少个section
-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
[cpp] view plain copy
//返回行数,也就是返回数组中所存储数据,也就是section的元素
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [self.listData count];
}
UITableView每一行都有一个UITableViewCell的实例表示,它也继承UIView,也就是每一行又拥有一个子视图,如果是大型表格,这样开销就非常大,所以就有了单元格的重用;当一部分单元格滚出屏幕后,他们被放在一个可重用的单元序列之中。如果系统运行比较慢,表视图就会从序列中删除这些单元,释放空间,如果有储存空间,表视图就会重新获取这些单元,以后面使用;
[cpp] view plain copy
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// 声明静态字符串型对象,用来标记重用单元格
static NSString *TableSampleIdentifier = @"TableSampleIdentifier";
// 用TableSampleIdentifier表示需要重用的单元
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:TableSampleIdentifier];
// 如果如果没有多余单元,则需要创建新的单元
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:TableSampleIdentifier];
}
else {
while ([cell.contentView.subviews lastObject ]!=nil) {
[(UIView*)[cell.contentView.subviews lastObject]removeFromSuperview];
}
}
// 获取当前行信息值
NSUInteger row = [indexPath row];
// 填充行的详细内容
cell.detailTextLabel.text = @"详细内容";
// 把数组中的值赋给单元格显示出来
cell.textLabel.text=[self.listData objectAtIndex:row];
// cell.textLabel.backgroundColor= [UIColor greenColor];
// 表视图单元提供的UILabel属性,设置字体大小
cell.textLabel.font = [UIFont boldSystemFontOfSize:40.0f];
// tableView.editing=YES;
/*
cell.textLabel.backgroundColor = [UIColor clearColor];
UIView *backgroundView = [[UIView alloc] initWithFrame:cell.frame];
backgroundView.backgroundColor = [UIColor greenColor];
cell.backgroundView=backgroundView;
*/
// 设置单元格UILabel属性背景颜色
cell.textLabel.backgroundColor=[UIColor clearColor];
// 正常情况下现实的图片
UIImage *image = [UIImage imageNamed:@"2.png"];
cell.imageView.image=image;
// 被选中后高亮显示的照片
UIImage *highLightImage = [UIImage imageNamed:@"1.png"];
cell.imageView.highlightedImage = highLightImage;
return cell;
}
注释内容中有这两个设置表视图背景颜色的属性方法,具体了解可以看这个博客http://haoxiang.org/2010/12/uitableviewcell-background/ 讲的比较详细
[cpp] view plain copy
cell.textLabel.backgroundColor= [UIColor greenColor];
[cpp] view plain copy
cell.textLabel.backgroundColor = [UIColor clearColor];
UIView *backgroundView = [[UIView alloc] initWithFrame:cell.frame];
backgroundView.backgroundColor = [UIColor greenColor];
cell.backgroundView=backgroundView;
追问
好像不是我想要的答案 因为我们布局UI的时候 很多时候使用Xib UIView 很多时候有点击事件 实现页面的跳转
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询