如果Statement删除TableView数据

时间:2013-12-02 13:09:24

标签: ios objective-c uitableview

我有一个带有表视图控制器的项目。当我拿出

下的一个If语句时

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

以及其他所有显示信息的人。但是,只要我在if语句中添加它,信息就会消失,我无法弄清楚问题。非常感谢帮助。

.h文件代码

#import <UIKit/UIKit.h>


@interface deptTableViewController : UITableViewController <UISearchBarDelegate, UISearchDisplayDelegate>


@property (strong, nonatomic) IBOutlet UISearchBar *searchNames;

@end

.m文件代码

#import "deptTableViewController.h"


@interface deptTableViewController ()

@property (nonatomic, copy) NSDictionary *names;
@property (nonatomic, copy) NSArray *keys;
@property (nonatomic, strong) NSMutableArray *filterednames;
@property (nonatomic, strong) UISearchDisplayController *searchController;

@end

@implementation deptTableViewController

@synthesize names, keys, filterednames, searchController;

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    UITableView *tableview = (id) [self.view viewWithTag:1];

    [tableview registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"];

    filterednames = [[NSMutableArray alloc]init];

    searchController = [[UISearchDisplayController alloc]init];

    searchController.searchResultsDataSource = self;


    NSString *path = [[NSBundle mainBundle]pathForResource:@"staff" ofType:@"plist"];

    names = [NSDictionary dictionaryWithContentsOfFile:path];

    keys = [[names allKeys]sortedArrayUsingSelector:@selector(compare:)];


}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    if (tableView.tag == 1) {
        return [keys count];
    }

    else{
        return 1;
    }
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{


    if  (tableView.tag == 1) {

        NSString *key = keys[section];

        NSArray *keyValues = names[key];

        return [keyValues count];
    }

    else {
        return [filterednames count];
    }
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    // Configure the cell...

    if (tableView.tag == 1) {
        NSString *key = keys [indexPath.section];

        NSArray *keyValues = names [key];

        cell.textLabel.text = keyValues [indexPath.row];
    }

    else{

        cell.textLabel.text = filterednames [indexPath.row];
    }

    return cell;
}

@end

3 个答案:

答案 0 :(得分:0)

我猜你的tableViews没有一个标签设置为1.

答案 1 :(得分:0)

检查您的表实际上是IB中的“分组”类型表。如果它不是,即它的类型是“普通”,那么你为部分数量设置的值无关紧要,你将始终只有一个。

答案 2 :(得分:0)

我认为您正在初始化您的过滤名称数组,但没有添加任何信息,因此numberOfRows方法返回零,因此表视图中不显示任何信息。

suggetion复制可变数组中主数组的所有内容,并根据搜索从表中删除不需要的上下文并自动加载表