在 viewController 中重新加载 tableView
Posted
技术标签:
【中文标题】在 viewController 中重新加载 tableView【英文标题】:Reload a tableView inside viewController 【发布时间】:2014-03-26 18:12:10 【问题描述】:我在我的故事板上设置了一个视图控制器,并且我在这个视图控制器中插入了一个 tableView。我想在 viewDidLoad 上执行 [self.tableView reloadData];
,但它说找不到属性 tableView。
下面是 viewcontroller.m 文件中我的 tableView 的代码:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
return 1;
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
return @"Shared with";
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
return activeUsers.count;
- (sharedUsersTable *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier = @"sharedUser";
sharedUsersTable *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
cell = [[sharedUsersTable alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
NSDictionary *key = [activeUsers objectAtIndex:indexPath.row];
NSString *name = [key objectForKey:@"shared_user_name"];
NSString *email = [key objectForKey:@"email"];
cell.textLabel.text = [NSString stringWithFormat:@"%@", name];
cell.detailTextLabel.text = [NSString stringWithFormat:@"%@", email];
return cell;
我是否缺少一些特殊命令来在不是 TableViewCONtroller 的视图控制器中调用 tableView?
【问题讨论】:
你设置了delegate和dataSource吗? 恐怕不行。我究竟在哪里定义这些? 【参考方案1】:您需要在 tableView
中创建一个 IBOutlet
并为此调用 reloadData
。
【讨论】:
谢谢,应该可以。但是,视图没有加载数据。如果我的 tableview 被称为sharedView
我应该如何修改上面的代码以使其正确呈现?我现在假设,我的代码没有定义正确的 tableView。
您必须分配委托和数据源。使用tableView.datasource = self;
和tableView.delegate = self;
我在哪里定义这些?【参考方案2】:
这取决于您如何声明您的UITableView
。
如果它是一个属性 (@property (nonatomic, strong) UITableView *myTableView
),它将是 [self.myTableView reloadData]
。如果您将它声明为一个实例变量 (UITableView *_myTableView
),它将是 [_myTableView reloadData]
。
【讨论】:
【参考方案3】:您必须将 tableview 数据源和委托定义为 self.. 像 table.datasource=self
,
和table.delegate=self
.....您可以在viewdidload 中执行此操作....但是如果您在某处下载了数据,那么您可以在您下载的那个地方执行此操作并在那里重新加载表格。请在下载数据后将委托和数据源分配给表格并重新加载表格视图....并且请在重新加载时创建(@property (nonatomic, strong) UITableView *table)
之类的属性并使用self...
【讨论】:
以上是关于在 viewController 中重新加载 tableView的主要内容,如果未能解决你的问题,请参考以下文章
在 ViewController 中重新加载/刷新选项卡栏项目?
在 UITableView (swift2) 中选择单元格时更新/重新加载 ViewController
如何在 ipad 的另一个 ViewController 中重新加载 rootViewController
异步方法完成后在 ViewController 中重新加载数据
重新加载 ViewController 中的 tableview 让我在索引路径的 cellforRow 中出现“致命错误:索引超出范围”