
然后 再 @synthesize它 这样在代码中就直接能调用了 比如 取名为 Mytableview
然后 设置好 tableview的 代理方法以后
在四个 button的 action动作中
改变完填充数据以后
调用 [Mytableview reloadData]
这样就可以实现刷新数据了
1、第一种方式给Button加上tag值这里分为两种:一种是直接在原生的UITableViewCell上添加UIButton按钮,然后给UIButton设置tag值,然后在控制器里的方法里通过取数据,做界面跳转等。还是举个例子吧,省的回忆半天。
[objc] view plaincopy
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *identifier = @"Cell"
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier]
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]
cell.selectionStyle = UITableViewCellSelectionStyleNone
}
User *user = _users[indexPath.row]
cell.user = user
//拍照button
UIButton *photographButton = [UIButton buttonWithType:UIButtonTypeCustom]
photographButton.frame = CGRectMake(221 , 10, 100, 44)
[photographButton setImage:[UIImage imageNamed:@"camera.png"] forState:UIControlStateNormal]
[photographButton addTarget:self action:@selector(photographButtonClicked:) forControlEvents:UIControlEventTouchUpInside]
photographButton.tag = indexPath.row
[cell.contentView addSubview:photographButton]
return cell
}
然后在点击事件中取数据,加信息
[objc] view plaincopy
- (void)photographButtonClicked:(UIButton *)sender{
User *user = _users[sender.tag]
PhotoPickerController *photoPicker = [[PhotoPickerController alloc] init]
photoPicker.user = user
[self.navigationController pushViewController:photoPicker animated:YES]
}
以上两个方法都是在同一个控制器中。
另外一种,自定义了UITableViewCell,那么就在UITableViewCell里添加一个代理方法。
[objc] view plaincopy
#import <UIKit/UIKit.h>
@protocol TermCellDelegate <NSObject>
- (void)choseTerm:(UIButton *)button
@end
@interface TermCell : UITableViewCell
@property (retain, nonatomic) IBOutlet UIButton *checkButton
@property (retain, nonatomic) IBOutlet UILabel *termLabel
@property (assign, nonatomic) BOOL isChecked
@property (assign, nonatomic) id<TermCellDelegate>delegate
- (IBAction)checkAction:(UIButton *)sender
@end
#import "TermCell.h"
@implementation TermCell
- (void)awakeFromNib
{
// Initialization code
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated]
// Configure the view for the selected state
}
- (void)layoutSubviews
{
[super layoutSubviews]
if (_isChecked) {
[_checkButton setBackgroundImage:[UIImage imageNamed:@"task_state_checked"] forState:UIControlStateNormal]
} else {
[_checkButton setBackgroundImage:[UIImage imageNamed:@"task_state_unchecked"] forState:UIControlStateNormal]
}
}
- (void)dealloc {
[_checkButton release]
[_termLabel release]
[super dealloc]
}
- (IBAction)checkAction:(UIButton *)sender {
if ([_delegate respondsToSelector:@selector(choseTerm:)]) {
sender.tag = self.tag
[_delegate choseTerm:sender]
}
}
@end
然后再控制器中实现Cell的代理方法即可
[objc] view plaincopy
#pragma mark - TermCellDelegate
- (void)choseTerm:(UIButton *)button
{
_clickIndex = button.tag
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"确定修改学期吗?" message:nil delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil nil]
[alertView show]
}
当然,这里也可以做界面跳转,取数据依然用button的tag值。
第二种,是直接在自定义的Cell里面跳转,这种耦合性比较强。思路先是找到button的父控制器,然后做界面跳转或者其他 *** 作。有这样一个工具方法
[objc] view plaincopy
#import "UIView+Additions.h"
@implementation UIView (Additions)
- (UIViewController *)viewController
{
UIResponder *next = [self nextResponder]
do {
if ([next isKindOfClass:[UIViewController class]]) {
return (UIViewController *)next
}
next = [next nextResponder]
} while (next != nil)
return nil
}
头文件就不写了,很简单的扩展。
[objc] view plaincopy
- (void)setWeiboModel:(WeiboModel *)weiboModel
{
if (_weiboModel != weiboModel) {
[_weiboModel release]
_weiboModel = [weiboModel retain]
}
__block WeiboCell *this = self
_userImage.touchBlock = ^{
NSString *nickName = this.weiboModel.user.screen_name
UserViewController *userCtrl = [[UserViewController alloc] init]
userCtrl.userName = nickName
[this.viewController.navigationController pushViewController:userCtrl animated:YES]
[userCtrl release]
}
}
这里是给Cell赋值model,然后点击事件是用Block实现的。
很简单啊。。在点击+或者-按钮的时候设置tableview的editing为yes啊,记住点击的按钮是那个啊,可以设个bool或者其他的来记住都行,然后重写- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath根据你记住的按钮返回相应的类型啊。UITableViewCellEditingStyleDelete或者UITableViewCellEditingStyleInsert。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)