iOS UITableView一些基础知识

打开UIViewController.h

//

//  RootViewController.h

//  Lesson09TableView

//

//  Created by Dubai on 14-9-26.

//  Copyright (c) 2014年 Dubai All rights reserved.

//

#import <UIKit/UIKit.h>

//遵循一下代理

@interface RootViewController :
UIViewController<UITableViewDataSource,UITableViewDelegate>

@end

打开 UIViewController.m为:

//

//  RootViewController.m

//  Lesson09TableView

//

//  Created by Dubai on 14-9-26.

//  Copyright (c) 2014年 Dubai All rights reserved.

//

#import "RootViewController.h"

@interface
RootViewController ()

@end

@implementation RootViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

self = [super
initWithNibName:nibNameOrNil
bundle:nibBundleOrNil];

if (self) {

// Custom initialization

}

return
self;

}

- (void)viewDidLoad

{

[super
viewDidLoad];

// Do any additional setup after loading the view.

UITableView *tableView = [[UITableView
alloc] initWithFrame:self.view.bounds
style:(UITableViewStyleGrouped)];

[self.view
addSubview:tableView];

[tableView
release];

//属性

tableView.rowHeight =
90;//行高

tableView.separatorColor = [UIColor
redColor];//行隔性颜色

//tableView.separatorStyle = UITableViewScrollPositionNone;//分割线
消失

//tableView.separatorStyle = UITableViewScrollPositionBottom;

//tableView.separatorStyle = UITableViewRowAnimationRight;

tableView.dataSource =
self;//设置数据源的代理(必须实现)

tableView.delegate =
self;//负责控制的代理对象

}

//设置分区,可选实现,因为tableview默认有一个分区(数据源代理)

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

return 4;

}

//设置每个分区的行数,必须实现(数据源)

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

return 5;

}

//设置每行要显示的内容,每行所在位置会放值一个tabelViewcell,每行要显示的数据,设置在cell上必须实现

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath
*)indexPath

{

//当某行移出屏幕时,tableView会将这行显示的cell,移动到重用集合中储存,这行就咩有cell显示任何数据.

//因此,只要某行要进入屏幕显示,必须执行这个代理方法.设置这行要显示的cell;

NSLog(@"row= %ld",indexPath.row);

//indexPath包含两个属性 section和 row
即分区和行数

//section
和row 的索引都从0开始.每个分区中的row的索引都是从0开始

UITableViewCell *cell = [[UITableViewCell
alloc] initWithStyle:(UITableViewCellStyleDefault)
reuseIdentifier:@"cell"];

//cell的样式
是用来影响3个视图的位置

//cell.imageView.image = [UIImage imageNamed:@"ha.png"];

//cell.detailTextLabel 
直接用 不用创建(不能改变大小)

cell.textLabel.text = [NSString
stringWithFormat:@" section:%ld row:%ld",indexPath.section,indexPath.row];//在第几个分区
第几行

cell.detailTextLabel.text =
@". . . .";//当是default时不显示(可以修改cell样式
来显示)

//cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;//辅助视图

cell.accessoryType =
UITableViewCellAccessoryCheckmark;

//cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

//只让第一行显示checkmark

if (indexPath.row ==
0) {

//如果是第一行就显示为checkmark

cell.accessoryType =
UITableViewCellAccessoryCheckmark;

}else{

cell.accessoryType =
UITableViewCellAccessoryNone;

}

return cell;

//    //重用

//

//    //先从重用队列中获取可以被重用的cell对象,

//

//    static NSString *indentifier = @"cell";//标示

//    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:indentifier];

//    //如果重用队列中没有可以使用的cell,必须自己创建.

//    if (cell == nil) {

//        cell = [[[UITableViewCell alloc] initWithStyle:(UITableViewCellStyleSubtitle) reuseIdentifier:indentifier] autorelease];

//        NSLog(@"创建的新的cell对象");//只许创建对象

//

////        cell.textLabel.text = [NSString stringWithFormat:@"%ld",indexPath.row];

//

//    }

//    //重用在这里

//    //设置当前要使用的cell,可能放置在任何一行

//    cell.textLabel.text = [NSString stringWithFormat:@"%ld",indexPath.row];

//    //cell.textLabel.text = [NSString stringWithFormat:@"%ld",indexPath.section];

//    cell.detailTextLabel.text = [NSString stringWithFormat:@"nihao"];//显示不显示跟上面的cell创建时的subtitle有关

//    return cell;

}

//给每个分区设置头部标题

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

{

return [NSString
stringWithFormat:@"%ld",section +
1];

}

//给所有的副标题右侧的.

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView

{

return
@[@"1",@"2",@"3"];

}

////设置行高

//- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

//{

//    if (indexPath.section == 0) {

//        return 20;

//    }if (indexPath.section == 1) {

//        return 60;

//    }if (indexPath.section == 2) {

//        return 40;

//    }if (indexPath.section == 3) {

//        return 100;

//    }return 2;

//

//

//}

//

//检测cell被选中的第几个分区第几行

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath
*)indexPath

{

NSLog(@"分区   %ld,行数:%ld",indexPath.section+1,indexPath.row
);

}

- (void)didReceiveMemoryWarning

{

[super
didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

/*

#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

{

// Get the new view controller using [segue destinationViewController].

// Pass the selected object to the new view controller.

}

*/

@end

如图:

一些UItableView的复杂用处与难点以后我会给大家整理一下!

时间: 2024-10-12 21:22:06

iOS UITableView一些基础知识的相关文章

iOS开发多线程基础知识 NSOperation

-------NSOperation简介---- 1.NSOperation的作用 ·配合使用NSOperation和NSOperationQueue也能实现多线程编程 2.NSOperation和NSOperationQueue实现多线程的具体步骤 ·先将需要执行的操作封装到一个NSOperation对象中 ·然后将NSOperation对象添加到NSOperationQueue中 ·系统会自动将NSOperation中封装的操作放到一条新线程中执行 ---------NSOperation的

IOS 教程以及基础知识

http://wenku.baidu.com/course/view/1ce3571252d380eb62946d8c http://iphone.apkbus.com/ www.itcast.cn //博客 http://blog.csdn.net/cutesource/article/details/7715593 // ios虚拟开发环境搭建 http://www.cnblogs.com/mjios/ //ios 博客 http://www.9ria.com/subject/summary

iOS开发多线程基础知识

--------------------------多线程概念基础------- 进程:正在运行的程序 内存:每个进程所占的存储空间 线程:1个进程要像执行任务,必须得有线程,线程是进程的基本执行单元, 线程的串行: ·1个线程中人物的执行是串行的 ·0同一个时间内,1个线程只能执行1个任务 0·线程是进程的一条执行路径 --------多线程 ·一个进程中可以开启多条线程,每条线程可以并行(同时)同时执行不同的任务 ·进程->车间 线程->车间工人 线程的并行: ·进程内多个线程同时执行,可

android、IOS和手机基础知识

一.手机基础知识 1.固件.刷固件.固件版本 固件是指固化的软件,英文为firmware,它是把某个系统程序写入到特定的硬件系统中的flashROM.手机固件相当于手机的系统,刷新固件就相当于刷系统.不同的手机对应不同的固件,在刷固件前应该充分了解当前固件和所刷固件的优点缺点和兼容性, 并做好充分的准备.固件版本是指官方发布的固件的版本号!里面包含了应用部分的更新和基带部分的更新,官方新固件的推出的主要目的是为了修复已往固件中存在的BUG以及优化相关性能. 2.ROM(包)智能手机配置中的ROM

IOS Socket 02-Socket基础知识

1. 简介 Socket就是为网络服务提供的一种机制 通信的两端都是Socket 网络通信其实就是Socket间的通信 数据在两个Socket间通过IO传输 2. Socket通信流程图 3. 模拟QQ聊天图 首先,张三的QQ先发出一句话'你吃饭了吗'到服务器Server.Server接收到之后,将这段话发送给李四. 然后,李四接收到这句话后,作出相应的答复'还没,一起吃不'给张三的QQ.这句话返回操作也是一样的流程,先送到服务器,最后送到张三QQ中.如下图: 看本篇文章之前,可以先了解一下网络

IOS研究之IOS开发笔记基础知识学习

本文是我的IOS学习笔记,都是基础的知识点,在这里记录下方面以后查询. 1,UIScrollView视图类能完成滚动的功能. 示例如下: UIScrollView *tableScrollView; tableScrollView=[[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];//窗口大小 tableScrollView.contentSize=CGSizeMake(640, 480);//设置内容视图的大小 ta

IOS 多线程-线程基础知识

大部分现代操作系统,包括IOS,都支持执行线程的概念.每个进程可以包含多个线程,他们可以同时运行.如果只有一个处理器核心,操作系统将在所有执行线程之间切换,非常类似于在所有执行线程之间切换.如果拥有多个核心(核心),线程将像进程一样,分散到多个核心上去执行. 一个进程中的所有线程共享可执行程序代码和全局数据.每个线程也可以拥有一些独有的数据.线程可以使用一种成为互斥量或锁的特殊结构,这种结构可以确保特定的代码块无法一次没多个线程执行.在多个线程同时访问相同数据时,这有助于保证正确的结果,在一个线

iOS 内存管理基础知识

内存管理问题,首先要知道一个概念,引用计数.Objective-C 的内存管理基于引用计数(Reference Count).如果要使用一个对象,并希望确保在使用期间对象不被释放,需要保证在使用过程中引用计数>0,在使用过后,把引用计数-1.当引用计数==0时,就会调用销毁方法了. 那么我们非常有必要知道,哪些操作会使用引用技术+1,哪些会-1.OK,下面是一个列表: +1操作 alloc - 创建对象是调用alloc,为对象分配内存,对象引用计数加一.. copy - 拷贝一个对象,返回新对象

IOS Socket 01-网络协议基础知识

1. 网络参考模型 OSI参考模型                                          TCP/IP参考模型 2. 七层简述 1)物理层:主要定义物理设备标准,如网线的接口类型.各种传输介质的传输速率等.主要作用是传输比特流(就是由1.0转化为电流强弱来进行传输,到达目的地后再转化为1.0,也就是常说的数模与模数转换).这一层的数据叫做比特(bit),主要设备:集线器 2)数据链路层:主要将从物理层接收的数据进行MAC地址的封装与解封装.常把这一层的数据叫做帧,主要