无法重新加载UITableView

时间:2011-03-15 22:38:21

标签: iphone

我正在尝试创建一个读取json feed的iphone应用程序,但我在更新TableView时遇到了一些麻烦。

这是我的TableViewController头文件:

@interface LiveNewsController : UITableViewController <UITableViewDelegate, UITableViewDataSource>{

NSMutableData *responseData;
NSMutableArray *articleArray;

UITableView *tblView;

}

-(void) refreshPressed: (id)sender;

@property (nonatomic, retain) IBOutlet UITableView *tblView;

@end

这些是我的TableViewController实现文件的 部分 部分:

@implementation LiveNewsController

@synthesize tblView;

-(id) init {
    if(self = [super init])
    {
        self.title = @"Live News";
    }
    return self;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    NSLog(@"I am here %d",[articleArray count]);
    return [articleArray count];
}


// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
       cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    NSLog(@"cellForRowAtIndexPath called. Data size %d", [articleArray count]);


    NSUInteger row = [indexPath row];
    cell.textLabel.text = [articleArray objectAtIndex:row];

    return cell;
}

-(void) refreshPressed: (id)sender
{
    NSLog(@"Reload Pressed. Data size: %d", [articleArray count]);
    [tblView reloadData];
}

以下是带有连接的.xib文件的屏幕截图: IB Screenshot

所以主要的想法如下:

  1. 获取articleArray
  2. 按下刷新时更新视图(正在正确获取数据,但此处不显示该片段)
  3. numberOfRowsInSection和CellForRowAtIndexPath仅在视图加载时被调用一次,但是当我按下重新加载按钮时没有任何反应。

    我检查了tblView,它是 nil 。我做了一些研究并读到这通常是由.xib文件中的一些错误连接引起的,但我已经检查了三次,我似乎无法查明问题。

    感谢任何帮助,

    谢谢!

1 个答案:

答案 0 :(得分:2)

您不需要声明UITableView tblView UITableViewController已经有一个(因此也是所有子类)。 试试[self.tableView reloadData];