gpt4 book ai didi

ios - 2 UIViewController中的UITableView相互影响

转载 作者:行者123 更新时间:2023-12-01 19:08:50 24 4
gpt4 key购买 nike

我已经做了大约 3 个小时了,我终于向你们所有人认输了。我有 2 UITableView在我看来,其中一个是可以发表评论的论坛,第二个是 UITableView用来指人。我遇到的问题是 tableview counts即使我只想更新 1 个表格 View ,也会受到影响。

我在 viewdidload 中设置了委托(delegate)/数据源

self.mentionTableView.delegate = self;
self.mentionTableView.dataSource = self;
self.mentionTableView.tag = 1;

self.forumTable.delegate = self;
self.forumTable.dataSource = self;
self.forumTable.tag = 2;

如果我实际上没有加载 feedArray这是 forumTable从中获取数据,提及部分完美运行。我发现如果 matchedNames.count < feedArray.count一切正常,但如果 matchedNames.count > feedArray.count它崩溃了,这是我得到的错误
-[__NSCFArray objectAtIndex:]: index (1) beyond bounds (1)

这意味着我在 feedArray 中只有 1 项和 matchedNames有不止一个。

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

我已经使用这些代码来尝试使其工作,但仍然没有,我什至完成了它们的组合。

1)
if ([tableView isEqual: mentionTableView]){

NSLog(@"%@",matchedNames);
NSLog(@"%i",matchedNames.count);
return [matchedNames count];


} else if([tableView isEqual:forumTable]){

return [feedArray count];
}

2)
if (tableView == mentionTableView){

NSLog(@"%@",matchedNames);
NSLog(@"%i",matchedNames.count);
return [matchedNames count];



} else if(tableView == commentTable){

return [feedArray count];
}

3)
    if (tableView.tag == 1){

NSLog(@"%@",matchedNames);
NSLog(@"%i",matchedNames.count);
return [matchedNames count];



} else if(tableView.tag == 2){

return [feedArray count];
}

我知道我不必执行 else if但我只是想具体一点,也许可以避免这个问题。

这是我的 cellForRowAtIndexPath
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

if (tableView.tag == 1){
CGAffineTransform transform = CGAffineTransformMakeRotation(3.14);


static NSString *CellIdentifier = @"CellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.transform = transform;

cell.textLabel.text = [self.matchedNames objectAtIndex:indexPath.row];

return cell;

} else {
static NSString *CellIdentifier = @"commentCell";

commentsCustomCell *cell =(commentsCustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[commentsCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;

NSDictionary *feedPost = [feedArray objectAtIndex:indexPath.row];
NSString *checkIFempty = [feedPost objectForKey:@"isForum_empty"];

if (![checkIFempty isEqualToString:@"1"]) {
cell.noCommentsLabel.text = nil;

} else {
cell.noCommentsLabel.text = @"No Comments";
cell.forumComment = nil;
}
NSString *username =[feedPost objectForKey:@"Username"];
NSString *final_time =[feedPost objectForKey:@"final_time"];
NSString *userIDforPic =[feedPost objectForKey:@"UserID"];

finalComment = [feedPost objectForKey:@"comment"];
cell.forumComment.text = finalComment;

return cell;
}

}

如果我的问题令人困惑,我深表歉意,我没有睡 36 个小时。谢谢你看我的问题!

最佳答案

你真的真的应该考虑重构你的代码并将这两个 tableViews 分开在不同的 viewControllers 中。

例如,您可以在主 viewController 中使用 containerViews,并将 tableview 放在容器 View Controller 中。

TableView delegates 使用了很多代码,给同一个 Controller 设置不同的 tableViews 总是会这样,弄乱代码,给更多的麻烦。

关于ios - 2 UIViewController中的UITableView相互影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18146434/

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