tableview上下刷新的实现


文件mjrefresh
-----------

@interface allCourseViewController ()<UITableViewDataSource,UITableViewDelegate,MJRefreshBaseViewDelegate>
{
    allCourseView *allCourse;
    NSMutableArray *_menuArray;
    NSMutableArray *_dateArray;

    **NSInteger _page;
    BOOL _isPull;**
}

**@property (nonatomic,strong) MJRefreshHeaderView *headerRefreshView;
@property (nonatomic,strong) MJRefreshFooterView *footerRefreshView;**

@end

@implementation allCourseViewController

#pragma mark ========== 各初始化方法 =======

**- (void)dealloc
{
    [self.headerRefreshView free];
    [self.footerRefreshView free];
}**


// GET方法
**-(MJRefreshHeaderView *)headerRefreshView{
    if (!_headerRefreshView) {
        _headerRefreshView = [[MJRefreshHeaderView alloc] init];
        _headerRefreshView.scrollView = allCourse.tableview;
        _headerRefreshView.delegate = self;
    }
    return _headerRefreshView;
}
-(MJRefreshFooterView *)footerRefreshView{
    if (!_footerRefreshView) {
        _footerRefreshView = [[MJRefreshFooterView alloc] init];
        _footerRefreshView.delegate = self;
        _footerRefreshView.scrollView = allCourse.tableview;

    }
    return _footerRefreshView;
}**

- (void)creatData
{
    _menuArray = [NSMutableArray array];

    **if (_dateArray == nil) {
         _dateArray = [NSMutableArray array];
    }**

}

#pragma mark ================= 各界面触发方法

- (void)viewDidLoad
{
    [super viewDidLoad];
    **_page = 1;**

    [self getMenuContentRequest];
    // Do any additional setup after loading the view.
}

- (void)getMenuContentRequest
{
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    **NSDictionary *parmDic = @{@"cat_type":@"0",@"easy_type":@"0",@"page":[NSString  stringWithFormat:@"%d",_page],@"sort_type":@"0",@"token":@"e41ccf73c437ff338e74b48d0941fee1",@"uid":@"1114749"};**
    [manager POST:courselist parameters:parmDic success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"%@",responseObject);
       // NSDictionary *headDic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
        **if (_isPull) {
            [_dateArray removeAllObjects];
        }**
        for (NSDictionary *dic1 in responseObject[@"data"]) {
            courseList *course = [courseList couresList:dic1];
            [_dateArray addObject:course];

        }
        [allCourse.tableview reloadData];

        **[self.headerRefreshView endRefreshing];
        [self.footerRefreshView endRefreshing];**
        allCourse.tableview.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        **[self.headerRefreshView endRefreshing];
        [self.footerRefreshView endRefreshing];**
    }];
}

#pragma mark --MJRefreshBaseViewDelegate

**- (void)refreshViewBeginRefreshing:(MJRefreshBaseView *)refreshView
{
    if (refreshView == self.headerRefreshView) {
        _page = 1;
        _isPull = YES;
    }
    else
    {
        _page ++;
        _isPull = NO;
    }
    [self getMenuContentRequest];
}**


这里写代码片
加粗部分是集成添加进去的部分

### 回答1: 这个问题大概是问如何在 PyQt 的 tableView 上更新数据吧? 更新 tableview 上的数据有几种方法: 1. 直接修改 QStandardItemModel 中对应的数据,然后更新 tableview。 2. 如果想动态地添加新的数据行和列,可以先创建 QStandardItem,然后加到 model 中,最后更新 tableview。 3. 也可以使用 QAbstractTableModel 或者其子类,实现表格模型中的数据,然后进行更新。 需要注意的是,在更新数据时,一定要及时更新 model 的数据,否则更新后的数据将不能正确地显示在 tableview 上。 ### 回答2: PyQt中的TableView是一个非常实用的UI组件,它可以展示复杂的表格数据,而且能够灵活地进行编辑、选择等操作。但是,在不断地操作表格数据时,我们可能需要及时地刷新TableView以保证数据的正确性和实时性。下面我们来看一下如何实现PyQt TableView的数据刷新。 首先,我们需要明确TableView的数据来源是什么。通常情况下,我们会使用model-view架构中的Model来管理数据,而TableView则用来展示Model中的数据。因此,要实现TableView的数据刷新,就需要先对Model中的数据进行更新。 下面我们以一个简单的例子来演示如何更新Model中的数据。假设我们有一个包含学生姓名和成绩的数据表格,我们想要将某个学生的成绩从原来的60分改为90分。代码如下: ```python # 获取Model model = self.tableView.model() # 获取需要更新的行和列 row = 1 col = 1 # 更新数据 model.setData(model.index(row, col), 90) ``` 在以上代码中,我们首先通过`self.tableView.model()`方法获取当前TableView使用的Model。然后,我们指定需要更新的行和列的索引(注意,这里的行和列是从0开始计数的)。最后,我们调用Model的`setData()`方法将新的数据写入到指定的单元格中。 接下来,我们需要通知TableView刷新数据,让它重新加载Model中的最新数据。我们有多种方式可以实现数据的刷新,其中一种简单的方法是使用`reset()`方法。代码如下: ```python # 通知TableView刷新数据 model.reset() ``` 在以上代码中,我们调用Model的`reset()`方法,该方法会清除Model中的所有数据并重新加载。当然,这种方式会导致TableView中所有的行都重新创建,可能会降低程序的性能。因此,如果只需要更新几行数据,可以考虑使用`setData()`方法更新指定行和列的数据,而不使用`reset()`方法。 另外,有一些场景下我们需要实现局部数据的刷新,即只刷新某些单元格的数据。这可以通过`dataChanged()`方法来实现。代码如下: ```python # 通知TableView刷新指定的单元格数据 model.dataChanged.emit(model.index(row, col), model.index(row, col)) ``` 在以上代码中,我们调用Model的`dataChanged()`方法,该方法会通知TableView重新加载指定的单元格数据。我们需要传入需要更新的单元格的索引,这里我们只更新一个单元格,因此都使用同一个索引。 总之,PyQt TableView的数据刷新可以通过更新Model中的数据并调用特定的方法来实现,这样TableView就能够展现最新的、正确的数据信息。在实际开发中,我们需要根据具体的业务场景选择合适的刷新方式,以保证程序的性能和用户体验。 ### 回答3: PyQt是Python编程语言的一个GUI工具包。PyQt tableview是一个用于显示数据的GUI控件。在使用PyQt tableview时,我们通常需要更新并刷新数据。下面是如何在PyQt tableview中更新和刷新数据的方法。 在PyQt tableview中,我们通常使用QStandardItem模型来存储和管理数据。这个数据模型不仅能够存储数据,还可以提供数据变化的信号,它可以在数据发生改变的时候告诉视图更新数据。 更新数据模型: 1.在应用程序中建立一个数据模型。 ``` tableModel = QStandardItemModel() ``` 2.向数据模型中添加数据。 ``` tableModel.setItem(row, col, QStandardItem(str(data))) ``` 3.使用setData函数更新某一单元格或行数据。 ``` tableModel.setData(tableModel.index(row, col), data, Qt.DisplayRole) ``` 4.使用data()函数获取单元格或行数据。 ``` tableModel.data(tableModel.index(row, col), Qt.DisplayRole) ``` 在更新数据后,我们需要使用数据模型的emitSignals方法发出信号,以通知视图进行刷新。 ``` tableModel.emitSignals(QModelIndex(), QModelIndex()) ``` 在PyQt tableview中,我们还可以使用QTableView和QAbstractTableModel类来更新和刷新数据。这个方法相对于使用QStandardItem模型更加复杂,但有一些应用程序无法使用QStandardItem模型,因此使用QTableView和QAbstractTableModel类。 更新数据模型: 1. 建立一个数据模型类。 ``` class TableModel(QAbstractTableModel): def __init__(self, data): super().__init__() self._data = data ``` 2. 重写rowCount函数以返回数据行数。 ``` def rowCount(self, parent): return len(self._data) ``` 3. 重写columnCount函数以返回数据列数。 ``` def columnCount(self, parent): return len(self._data[0]) ``` 4. 重写data函数以返回所选单元格的数据。 ``` def data(self, index, role): if role == Qt.DisplayRole: return self._data[index.row()][index.column()] else: return None ``` 5. 使用tableView.setModel(tableModel)程式码将数据模型与tableView关联。 ``` tableView.setModel(tableModel) ``` 在更新数据后,数据模型会自动发出信号,告诉视图进行刷新。如果需要立即刷新视图,可以使用reset()函数强制刷新视图。 总之,在PyQt tableview中更新和刷新数据有几种方法可供选择,具体取决于应用程序的需求。无论您选择哪种方法,都要确保发出正确的信号以使视图刷新
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值