关于继承UITableViewController若干问题

本文探讨了在iOS开发中遇到表格视图粘贴问题的原因,并提供了解决方案。通过实现数据源和观察者机制,确保了表格视图在不同视图中的正确响应。此外,文章还介绍了如何避免数据源未设置的问题,从而使得表格视图在各个视图控制器中都能正常工作。
//
//  MSHomeCommentTableViewController.m
//  xiaoqu-ios
//
//  Created by Charlie on 15/7/1.
//  Copyright (c) 2015年 meimeidou. All rights reserved.
//

#import "MSHomeCommentTableViewController.h"

@interface MSHomeCommentTableViewController ()<UITabBarControllerDelegate,UITableViewDataSource,UITableViewDelegate>
{
    BOOL _isMoreDataIng;
    
    
}

@end

@implementation MSHomeCommentTableViewController
-(NSMutableArray *)dataArr
{
    if (!_dataArr)
    {
        _dataArr =[NSMutableArray array];
    }
    return _dataArr;
}
- (void)viewDidLoad {
    [super viewDidLoad];
    _isMoreDataIng = NO ;
    [self getDataFromServer];
    [self.refreshControl addTarget:self action:@selector(getDataFromServer) forControlEvents:UIControlEventValueChanged];//自带的刷新控件
    [self.tableView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:nil]; //观察者 观察上拉加载更多数据
}
#pragma mark 从服务器获取数据
- (void)getDataFromServer
{
    
}
- (void)getMoreDataFromServer
{
    
}
#pragma mark -上拉加载更多函数
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    if ([object isKindOfClass:[self.tableView class]]) {
        CGFloat offset=[[change objectForKey:@"new"] CGPointValue].y ;
        
        if (offset > self.tableView.contentSize.height-self.tableView.frame.size.height)
        {
            NSLog(@"%.0f",offset);
            if (!_isMoreDataIng)
            {
                _isMoreDataIng = YES ; //记录刷新状态
                [self getMoreDataFromServer];// 记载更多数据
            }
            
        }
        
    }
}
/*
#pragma mark - doneRefresh
- (void)doneRefresh
{
    double delayInSeconds = 0.3;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
        [_refreshControl endRefreshing];
        _isLoadMoreProcessing = NO;
    });
}
 */
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    // Return the number of rows in the section.
    
    return self.dataArr.count;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (self.clickRowBlock) {
        self.clickRowBlock ((int)indexPath.row); //传递观察者
    }
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 75 ;
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString * cellID = @"ThemeCellId";
    MSThemeTableViewCell * cell ;
    cell =[tableView dequeueReusableCellWithIdentifier:cellID];
    if (!cell) {
        cell =[[MSThemeTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];
        cell.selectionStyle = UITableViewCellSelectionStyleNone ;
    }
    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    [cell configDataWithModel:self.dataArr[indexPath.row]];
    return cell;
}



-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPat{
    
}
- (void)dealloc
{
    [self.tableView removeObserver:self forKeyPath:@"contentOffset"]; //删除 观察者
}
@end

可能有些同学也是这样子写的,没问题,但是 就是tableview上的view 粘贴到其他view上好像没有反应,

_tableView=[[MSHomeCommentTableViewController alloc]init];
     _tableView.tableView.frame = CGRectMake(0, 0, kScreenWidth, kScreenHeight);
    [self.view addSubview:_tableView.tableView];

好像没问题,但是还是每出来。

最后想半天,原来是数据源没有。

再加上这数据源就OK了  在其他VC里面还有 设置喂成员变量才行。

   

MSHomeCommentTableViewController *_homeTableView;

}

- (void)configData
{
    _tableView.dataArr =[_dataArray mutableCopy];
}

加上这个函数就OK 了。

【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性和寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度和全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础和优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型和改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值