gpt4 book ai didi

ios - 使用 UISegmentedControl 更改 UITableView 的数据源(就像 Twitter 那样)

转载 作者:行者123 更新时间:2023-11-29 02:13:44 27 4
gpt4 key购买 nike

我正在尝试创建一个 TableView ,其中可以根据在 UISegmentedControl 上选择的索引来更改数据源。我会发布我所拥有的。似乎不起作用!我想像 Twitter 在其个人资料页面上使用“推文、媒体收藏夹”分段 Controller 那样进行操作。

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}

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

switch (self.segmentedControliPhone4.selectedSegmentIndex) {
case 0:
return 10;
break;
case 1:
return 15;
break;
case 2:
return 5;
break;
}
return 0;
}

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 30;
}

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{

self.segmentedControliPhone4 = [[HMSegmentedControl alloc] initWithSectionTitles:@[@"ACTIVITY FEED", @"HOT BOX", @"COLLECTIONS"]];
self.segmentedControliPhone4.selectedSegmentIndex = 1;
self.segmentedControliPhone4.frame = CGRectMake(0, 263, self.view.frame.size.width, 30);
self.segmentedControliPhone4.selectionIndicatorLocation = HMSegmentedControlSelectionIndicatorLocationDown;
self.segmentedControliPhone4.selectionStyle = HMSegmentedControlSelectionStyleBox;
self.segmentedControliPhone4.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin;
self.segmentedControliPhone4.backgroundColor = [UIColor blackColor];
self.segmentedControliPhone4.textColor = [UIColor whiteColor];
self.segmentedControliPhone4.font = [UIFont fontWithName:@"Lato" size:10];
self.segmentedControliPhone4.selectedTextColor = [UIColor colorWithRed:0.016 green:0.850 blue:0.796 alpha:1];
self.segmentedControliPhone4.selectionIndicatorColor = [UIColor colorWithRed:0.016 green:0.850 blue:0.796 alpha:1];
[self.segmentedControliPhone4 addTarget:self action:@selector(segmentedControlIndexChanged:) forControlEvents:UIControlEventValueChanged];
return self.segmentedControliPhone4;
}

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

if(cell == nil){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
}

switch (self.segmentedControliPhone4.selectedSegmentIndex) {
case 0:
cell.textLabel.text = @"Acitivy Feed";
cell.imageView.image = [UIImage imageNamed:@"brand.png"];
break;
case 1:
cell.textLabel.text = @"Hot Box";
break;
case 2:
cell.textLabel.text = @"Collections";
break;
}

return cell;
}

-(void)segmentedControlIndexChanged:(HMSegmentedControl *)segmentedControl{

if(segmentedControl.selectedSegmentIndex == 0){
self.hotBoxTableView.hidden = NO;
[self.hotBoxTableView reloadData];
}
else if(segmentedControl.selectedSegmentIndex == 1){
self.hotBoxTableView.hidden = NO;
[self.hotBoxTableView reloadData];
}
else if(segmentedControl.selectedSegmentIndex == 2){
self.hotBoxTableView.hidden = NO;
[self.hotBoxTableView reloadData];
}
}

我正在使用自定义分段控件,但愿意更改为常规控件。如果您有任何见解或疑问,请告诉我!

非常感谢!!

最佳答案

两件事。

首先你应该在更新单元格之前清除数据

cell.textLabel.text = nil
cell.imageView.image = nil
switch (self.segmentedControliPhone4.selectedSegmentIndex) {
case 0:
cell.textLabel.text = @"Acitivy Feed";
cell.imageView.image = [UIImage imageNamed:@"brand.png"];
break;
case 1:
cell.textLabel.text = @"Hot Box";
break;
case 2:
cell.textLabel.text = @"Collections";
break;
}

其次,在 segmentedControlIndexChanged 中,您在不同的 if 语句中运行相同的代码。以下应该足够了

-(void)segmentedControlIndexChanged:(HMSegmentedControl *)segmentedControl{

self.hotBoxTableView.hidden = NO;
[self.hotBoxTableView reloadData];

关于ios - 使用 UISegmentedControl 更改 UITableView 的数据源(就像 Twitter 那样),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28996860/

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