UITableView的协议传值

主要实现协议传值内部的传值所用的控件不再详述

声明协议

SecondViewController.h

//1.声明一份协议
@protocol SecondViewController <NSObject>
-(void)changeValue:(NSString *)str;
@end
@interface SecondViewController : UIViewController
@property(nonatomic,copy)NSString *name;
//2.设置代理人的属性
@property(nonatomic,assign)id<SecondViewController>delegate;
@end

SecondViewController.m文件中的协议方法的定义

@interface SecondViewController ()
@property(nonatomic,retain)UILabel *lable;
@property(nonatomic,retain)UITextField *textField;
@property(nonatomic,retain)UIButton *button;
@end

@implementation SecondViewController
-(void)dealloc{
    [_button release];
    [_lable release];
    [_textField release];
    [_name release];
    [super dealloc];
}
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    self.lable = [[UILabel alloc]initWithFrame:CGRectMake(100, 100, 150, 40)];
    self.textField = [[UITextField alloc]initWithFrame:CGRectMake(100, 150, 200, 50)];
    self.button = [UIButton buttonWithType:UIButtonTypeSystem];
    [self.button setTitle:@"返回" forState:UIControlStateNormal];
    [self.button addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];
//     对lable进行赋值
    self.lable.text = self.name;
}
-(void)click:(UIButton *)button{
//设置代理人并传值
    [self.delegate changeValue:self.textField.text];
//用视图控制器实现跳转
    [self.navigationController popViewControllerAnimated:YES];   
}

签订协议完成传值

#import "SecondViewController.h"
@interface MainViewController ()<UITableViewDataSource,UITableViewDelegate,SecondViewController>
@property(nonatomic,retain)UITableView *tableView;
@property(nonatomic,retain)NSMutableArray *arr;
@property(nonatomic,retain)UIImageView *imageView;
@end

@implementation MainViewController
-(instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        self.arr = [NSMutableArray arrayWithObjects:@"宋江", @"卢俊义", @"吴用", @"公孙胜", @"关胜", @"林冲", @"秦明" ,@"呼延灼" , @"花荣",@"柴进", @"李应", @"朱仝",@"鲁智深",@"武松",nil];
    }
    return self;
}
-(void)dealloc{
    [_tableView release];
    [_arr release];
    [_imageView release];
    [super dealloc];
}
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    self.navigationController.navigationBar.translucent = NO;

    self.tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 64) style:UITableViewStylePlain];
    self.tableView.delegate = self;
    self.tableView.dataSource = self;

    self.imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"123.png"]];
//imageView添加到tableView上
    [self.tableView addSubview:self.imageView];
    self.tableView.contentInset = UIEdgeInsetsMake(200, 0, 0, 0);

//    给tableview添加头视图
//    宽是tableview的宽度
//    self.tableView.tableHeaderView = self.imageView;
//    [self.tableView addSubview:self.imageView]; 
}
#pragma mark tableview的delegate已经签订好scrollView的协议,只要设置好代理人,就可以使用scrollView的协议方法
//只要滑动就会触发
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
//获取偏移量
    CGFloat y = scrollView.contentOffset.y;
    NSLog(@"%g",y);
    if (y < 0) {
        self.imageView.frame = CGRectMake(0, y, self.view.frame.size.width,-y);
    } 
}
//第一个必须实现的方法
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return self.arr.count;
}
//第二个必须实现的方法
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *reuse = @"reuse";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuse];
    if (!cell) {
        cell =  [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:reuse]autorelease];
    }
    cell.textLabel.text = self.arr[indexPath.row];
    cell.detailTextLabel.text = [NSString stringWithFormat:@"%ld",indexPath.section];
    NSString *picName = [NSString stringWithFormat:@"h%ld.jpeg",indexPath.row + 1];
    cell.imageView.image = [UIImage imageNamed:picName];
    return cell;
}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    SecondViewController *secVC = [[SecondViewController alloc]init];
    [self.navigationController pushViewController:secVC animated:YES];
    [secVC release];
    secVC.name = self.arr[indexPath.row];
    secVC.delegate = self;
}
//6.实现协议方法
-(void)changeValue:(NSString *)str{
//属性的数组中,相当于是数据源,把传过来的值添加到数组中
    if (![str isEqualToString: @""]) {
        [self.arr addObject:str];
        [self.tableView reloadData];
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值