gpt4 book ai didi

ios - reloadData 不适用于另一个 UITableView 静态单元格中的 UITableView

转载 作者:行者123 更新时间:2023-11-29 11:05:17 26 4
gpt4 key购买 nike

我有一个带有静态单元格的 UITableView,其中包含另一个 UITableView,当我调用 reloadData 时,它没有被更新。使用 ios5。

当我运行下面的代码时,subViewTable 显示在 viewDidLoad 中定义的值,并且在 AFNetwork 请求后不更新。

根据 NSLog 输出,在我的 AFNetwork 请求的成功 block 中调用 reloadData 后,cellForRowAtIndexPath 没有被调用。

我的代码如下

MainViewController.h

#import <UIKit/UIKit.h>
#import "SubViewTableViewController.h"

@interface MainController : UITableViewController{
SubviewTableViewController *subViewTVC;
IBOutlet UITableView *subViewTable;
}

MainViewController.m

@import "SubViewTableViewController.h"

@implementation MainController

- (void)viewDidLoad
{
[super viewDidLoad];
if (subViewTableViewController == nil)
{
subViewTVC = [[SubViewTableViewController alloc] init];
}
[subViewTable setDataSource: subViewTVC];
[subViewTable setDelegate: subViewTVC];
subViewTableViewController.view = subViewTableViewController.tableView;
}

@end

SubViewTableController.h

#import <UIKit/UIKit.h>

@interface SubViewTableController : UITableViewController <UITableViewDataSource, UITableViewDelegate>{
NSMutableArray *data;
}

@end

SubViewTableController.m

#import "SubViewTableController.h"
#import "AFNetworking.h"

@implementation SubViewTableController

- (void)fetchCustomData
{
request = // Set NSM mutable request;
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest: request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {

// Omitted code that adds JSON objects to data array

[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {};
[operation start];
}

- (void)viewDidLoad
{
[super viewDidLoad];
if (data == nil)
{
data = [NSMutuableArray arrayWithObjects:@"1",@"2", nil];
}
[self fetchCustomData];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
NSLog(@"Data Count: %i", data.count);
return [data count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"DataCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// Configure the cell...
if (cell == nil){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.textLabel.text = [data objectAtIndex:indexPath.row];
NSLog(@"Cell item: %@", [data objectAtIndex:indexPath.row]);
return cell;
}

@end

NSLog 输出

2012-12-16 13:59:31.538 testing[37592:f803] Data Count: 2
2012-12-16 13:59:31.539 testing[37592:f803] Cell item: 1
2012-12-16 13:59:31.541 testing[37592:f803] Cell item: 2
2012-12-16 13:59:31.575 testing[37592:f803] Data Count: 6

最佳答案

我最终从 AFJSONRequestOperationsuccess 回调中将通知从我的 SubView 发送到我的 MainView触发了[subViewTable reloadData]

SubViewTableController.m AFJSONRequestOperation 成功回调:

{
[[NSNotificationCenter defaultCenter] postNotificationName:@"SubViewUpdated" object:nil];
}

MainViewController.m

- (void)viewDidLoad
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(subViewUpdated) name:@"SubViewUpdated" object:nil];
}

- (void)subViewUpdated
{
[subViewTable reloadData];
}

- (void)viewDidUnload
{
//Unregister notifications
[[NSNotificationCenter defaultCenter] removeObserver:self];
}

关于ios - reloadData 不适用于另一个 UITableView 静态单元格中的 UITableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13906300/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com