gpt4 book ai didi

iOS - 一个 ViewController 中的两个 Tableview,每个都有不同的数据?

转载 作者:行者123 更新时间:2023-11-28 19:32:04 25 4
gpt4 key购买 nike

我正在尝试将 TableView 放在一个 ViewController 中。我在导航栏中的 UISegmentControl 在它们两者之间切换。例如。如果一个显示,另一个隐藏。也就是说,我想为 self.tableView 显示一种类型的单元格和数据,并为 self.friendsView 显示具有不同数据的不同单元格。

第一个 self.tableView 无缝填充,但是 self.friendsView 似乎没有加载其自定义单元格(尽管数据来自控制台)。我是否正确构建了以下内容?如果不是,我该如何纠正?

.h

@property (weak, nonatomic) IBOutlet UITableView *tableView;
@property (strong, nonatomic) NSMutableArray *myFriendData;
@property (strong, nonatomic) NSMutableArray *friendData;
@property (strong, nonatomic) IBOutlet UITableView *friendsView;

.m

      - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.



UINib *nib = [UINib nibWithNibName:@"sidebarCell" bundle:nil];
[self.sidetableView registerNib:nib forCellReuseIdentifier: @"sidebarCell"];

//to register next cell
nib = [UINib nibWithNibName:@"MyFriendTableViewCell" bundle:nil];
[self.friendsView registerNib:nib forCellReuseIdentifier: @"MyFriendTableViewCell"];



}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

if (tableView == self.sidetableView) {


/*
static NSString *NetworkTableIdentifier = @"MyFriendTableViewCell";

MyFriendTableViewCell *cell = (MyFriendTableViewCell *)[tableView dequeueReusableCellWithIdentifier:NetworkTableIdentifier];
if (tableView == self.tableView)

{

NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MyFriendTableViewCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
*/

MyFriendTableViewCell *cell = (MyFriendTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"MyFriendTableViewCell"];



NSDictionary *friendsName = [self.myFriendData objectAtIndex:indexPath.row];
[[cell friendName] setText:[friendsName objectForKey:@"title"]];

NSDictionary *friendsBio = [self.myFriendData objectAtIndex:indexPath.row];
[[cell friendBio] setText:[friendsBio objectForKey:@"field_friendbio"][@"und"][0][@"safe_value"]];


NSString *profilePath = [[self.myFriendData objectAtIndex:indexPath.row] objectForKey:@"field_picture"][@"und"][0][@"safe_value"];


[cell.friendPic sd_setImageWithURL:[NSURL URLWithString:profilePath]];

NSLog(@"This is profilePath %@",profilePath);

return cell;

}



if (tableView == self.friendsView)

{

/* static NSString *NetworkTableIdentifier = @"sidebarCell";

self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

sidebarCell *cell = (sidebarCell *)[tableView dequeueReusableCellWithIdentifier:NetworkTableIdentifier];
// if (tableView == self.friendsView) */

sidebarCell *cell = (sidebarCell *)[tableView dequeueReusableCellWithIdentifier:@"sidebarCell"];


NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"sidebarCell" owner:self options:nil];
cell = [nib objectAtIndex:0];

NSDictionary *userName = [self.friendData objectAtIndex:indexPath.row];
[[cell username] setText:[userName objectForKey:@"node_title"]];


NSDictionary *userBio = [self.friendData objectAtIndex:indexPath.row];
[[cell userDescription] setText:[userBio objectForKey:@"body"]];

NSString *profilePath = [[self.friendData objectAtIndex:indexPath.row] objectForKey:@"friendphoto"];

[cell.usermini sd_setImageWithURL:[NSURL URLWithString:profilePath]];

return cell;
}

UITableViewCell *cell;
return cell;
}

最佳答案

每个 TableView 都有一个返回语句。

    if (tableView == self.sidetableView)

{
....
return cell;
}

if (tableView == self.friendsView)

{
....
return cell;
}

我看到的另一个错误是您为单元格分配了两个不同的引用。例如:

sidebarCell *cell = (sidebarCell *)[tableView dequeueReusableCellWithIdentifier:NetworkTableIdentifier];
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"sidebarCell" owner:self options:nil];
cell = [nib objectAtIndex:0];

不要这样做。如果你从 xib 加载单元格,首先在 viewDidLoad 中注册它。

  - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.


UINib *nib = [UINib nibWithNibName:@"sidebarCell" bundle:nil];
[self.sidetableView registerNib:nib forCellReuseIdentifier: @"sidebarCell"];

//to register next cell
nib = [UINib nibWithNibName:@"MyFriendTableViewCell" bundle:nil];
[self. friendsView registerNib:nib forCellReuseIdentifier: @"MyFriendTableViewCell"];

}

并在 cellForRow 方法中,将其称为:

仅供引用:类名总是以大写字母开头

 SidebarCell *cell = (SidebarCell *)[tableView dequeueReusableCellWithIdentifier:@"sidebarCell"];

关于iOS - 一个 ViewController 中的两个 Tableview,每个都有不同的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42818333/

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