为什么UITableView不能是reloadData

时间:2011-10-19 07:56:35

标签: xcode uitableview tableview

 -(void) reload{
        [self.tableViewa reloadData];
    }

    -(void) viewWillAppear:(BOOL)animated{
        [self.tableViewa reloadData];
        [cachedProperties setTags:nil];


        self.tabBarController.navigationItem.rightBarButtonItem =nil;
        self.tabBarController.navigationItem.leftBarButtonItem =nil;
    }

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        return [[cachedProperties getTags] count];
    }

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *CheckMarkCellIdentifier = @"CheckMarkCellIdentifier";
        UITableViewCell * cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CheckMarkCellIdentifier] autorelease];

        NSUInteger row = [indexPath row];

        if([[[cachedProperties getTags] objectAtIndex:row] isNotEmpty]){
            cell.textLabel.text = [[cachedProperties getTags]objectAtIndex:row];
            cell.accessoryType= UITableViewCellAccessoryDetailDisclosureButton;
        }
        return cell;
    }

用这个方法,当viewWillAppear有一个代码[self.tableviewa reloadData]并且会调用numberOfRowsInSection时,但是当我调用具有[self.tableviewa reloadData]的方法Reload时,函数numberOfRowInSection将不会被调用..如何是真的吗?这个问题的原因是什么?

因为在firstTime viewWillAppear中调用,[cachedProperties setTags:nil]将设置标签并将调用我需要的-(void) reload{ [self.tableViewa reloadData]; }或[thatClass.tableViewa reloadData]使tableView不为null。为什么tableView没有reloadData?

1 个答案:

答案 0 :(得分:0)

试试这个:

 -(void) reload{
        [self.tableViewa reloadData];
        [cachedProperties setTags:nil];
    }

    -(void) viewWillAppear:(BOOL)animated{
        [self reload];

        self.tabBarController.navigationItem.rightBarButtonItem =nil;
        self.tabBarController.navigationItem.leftBarButtonItem =nil;
    }

...