怎么以点击按钮来刷新tableview的数据

怎么以点击按钮来刷新tableview的数据,第1张

先去给你的tableview一个property

然后 再 @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。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11493059.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存