一些概念:
1.//UITextView 它可以用做输入,也可以用作显示信息,当用作输入的时候,如果一行信息显示不下的时候,它会自动换行,它是继承自UIScrollView的
self.view.backgroundColor = [UIColor grayColor];
UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(40, 100, 200, 40)];
//设置预填信息
textView.text = @"";
//设置文字颜色
textView.textColor = [UIColor redColor];
//在这个地方设置 x y width 是无用的 只用设置高度才有用
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 80)];
view.backgroundColor = [UIColor redColor];
//只弹出视图 不弹出键盘
// textView.inputView = view;
//弹出键盘和视图
textView.inputAccessoryView = view;
//成为第一响应者
[textView becomeFirstResponder];
//设置键盘样式
textView.keyboardType = UIKeyboardTypeNumberPad;
//设置return键样式
textView.returnKeyType = UIReturnKeyGo;
//设置textView是否能够进行输入 YES可以输入 默认 NO不能输入
textView.editable = YES;
//设置textView识别的数据类型 手机号 链接 地理位置
//这个属性有作用的前提条件是上面的editable关闭
textView.dataDetectorTypes = UIDataDetectorTypeAll;
textView.delegate = self;
[self.view addSubview:textView];
//注意点:textView的上下左右会空出8个单位的空白,在计算位置的时候需要计算进去
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
NSLog(@"%ld ----%@",range.location,text);
// if (textView.text.length > 10)
// {
// return NO;
// }
return YES;//设为NO就输不进去了
}
//做限制输入功能
- (void)textViewDidChange:(UITextView *)textView
{
NSString *str = textView.text;
if (str.length > 10)
{
str = [str substringToIndex:10];
}
textView.text = str;
}
2. UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrouped];
tableView.delegate = self;
tableView.dataSource = self;
tableView.editing = YES;
//设置cell的高度 默认高度为44
// tableView.rowHeight = 60;
[self.view addSubview:tableView];
// tableView.scrollsToTop = NO;//点击状态栏回到顶部
// tableView.bounces = NO;//弹性
2.viewController先遵守协议
<UITableViewDelegate,UITableViewDataSource>
#pragma mark ---设置tableView的分组数
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return dataArray.count;
}
#pragma mark ---设置tableView的分组中的cell的数量***
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [dataArray[section] count];
}
#pragma mark ---创建cell并且给cell赋值***
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//建立标示符 加static后 只创建一次
static NSString *cellID = @"cellID";
//从复用池中取cell
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
static int i = 0;
//如果为空 那么就创建cell
if(cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];
i++;
}
NSLog(@"%d",i);
// UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
//二维数组下标唯一确定cell
NSString *str = dataArray[indexPath.section][indexPath.row];
cell.textLabel.text = [NSString stringWithFormat:@"section:%ld----row:%ld---%@",indexPath.section,indexPath.row,str];
// UITableViewCellStyleSubtitle是使用cell.detailTextLabel的前提
// cell.detailTextLabel
return cell;
}
#pragma mark ---设置cell的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == 0 && indexPath.row == 1)
{
return 100;
}
else
{
return 44;
}
}
#pragma mark ---设置分组的头部标题
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
NSArray *array = @[@"忍者",@"约德尔人",@"女神"];
return array[section];
}
#pragma mark ---设置分组的尾部标题
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
return [NSString stringWithFormat:@"%ld",section];
}
#pragma mark ---设置头部标题高度
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 40;
}
#pragma mark ---设置尾部标题高度
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 60;
}
#pragma mark ---自定义头部视图
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UILabel *label = [[UILabel alloc] init];
label.text = [NSString stringWithFormat:@"%ld",section];
label.backgroundColor = [UIColor yellowColor];
return label;
}
#pragma mark ---自定义尾部视图
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
UILabel *label = [[UILabel alloc] init];
label.text = [NSString stringWithFormat:@"%ld",section];
label.backgroundColor = [UIColor redColor];
return label;
}
#pragma mark ---滑动删除
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
[dataArray[indexPath.section] removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
#pragma mark ---设置删除按钮的标题
- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath
{
return @"删除";
}
#pragma mark ---移动cell
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
{
NSString *str = dataArray[sourceIndexPath.section][sourceIndexPath.row];
[dataArray[destinationIndexPath.section] insertObject:str atIndex:destinationIndexPath.row];
[dataArray[sourceIndexPath.section] removeObjectAtIndex:sourceIndexPath.row];
}
3.block:
(1).typedef void (^ColorBlock)(UIColor *color) ;
@property (copy,nonatomic)ColorBlock myBlock;
(2)
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
if (self.myBlock)
{
self.myBlock([UIColor colorWithRed:arc4random()%256/255.0 green:arc4random()%256/255.0 blue:arc4random()%256/255.0 alpha:1.0]);
}
[self dismissViewControllerAnimated:YES completion:nil];
}
(3) 当执行下面的代码时,会调用(2)
vc2.myBlock = ^(UIColor *color){
self.view.backgroundColor = color;
};
一些实用方法:
1.快速跳页面:
(1)调到指定:
[self presentViewController:vc3 animated:NO completion:nil];
(2)返回上一级:
[self dismissViewControllerAnimated:NO completion:nil];