gpt4 book ai didi

ios - 根据行选择转至 UITableView

转载 作者:行者123 更新时间:2023-11-29 02:53:52 25 4
gpt4 key购买 nike

我有一个 UITableView,其中包含 3 个项目的数组。根据用户选择,我需要这三个项目中的每一个来连接到不同的 UITableView。例如:

第一个场景是包含列表的表:天气、情报、燃料状态第二个场景是:

当用户选择天气时,请转到包含数组“每日 map 、火灾潜力等”的表。当用户选择情报时,请转到包含数组“当前事件火力、新初始攻击等”的表。

等等。

我被告知我可以为每个原型(prototype)单元使用不同的 UITableViewCells,但我确信有一种我根本无法掌握的更简单的方法。目前所有的转场都是在 Storyboard中完成的。有人可以详细说明我应该如何从一个场景切换到另一个场景(处于初级到中级的理解水平)吗?

#import "PSMenu_TableViewController.h"
#import "WXMenu_TableViewController.h"
#import "PSTableViewCell.h"

@interface PSMenu_TableViewController ()

@end

@implementation PSMenu_TableViewController
@synthesize PSMenuImage = _PSMenuImage;
@synthesize PSMenuText = _PSMenuText;


- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
// Custom initialization
}
return self;
}

- (void)viewDidLoad
{
[super viewDidLoad];
self.PSMenuText = [[NSArray alloc]
initWithObjects:@"Weather",
@"Intelligence",
@"Fuels Status",
nil];

self.PSMenuImage = [[NSArray alloc]
initWithObjects:@"RMACC_114x114.png",
@"RMACC_114x114.png",
@"RMACC_114x114.png",
nil];
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

- (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.
return [_PSMenuText count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"rootTableCell";

PSTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == 0) {
cell = [[PSTableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier];
}

// Configure the cell...
cell.rootLabel.text = [self.PSMenuText
objectAtIndex: [indexPath row]];

UIImage *rootPhoto = [UIImage imageNamed:
[self.PSMenuImage objectAtIndex: [indexPath row]]];

cell.rootImage.image = rootPhoto;

return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// Use indexPath to retrieve info that needs to be passed along to next view controller
[self performSegueWithIdentifier:@"getWeather" sender:self];
}


@end

我试图继续的 .m 文件之一:

#import "WXMenu_TableViewController.h"
#import "DWO_TableViewController.h"


@interface WXMenu_TableViewController ()

@end

@implementation WXMenu_TableViewController
{
//Define array for weather products list
NSArray *allwx;

}

- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
}
return self;
}

- (void)viewDidLoad
{
[super viewDidLoad];
//Define the weather products list
allwx = [NSArray arrayWithObjects:@"Daily Weather", @"Fire Potential", @"Multi-Media Briefing", @"Sig. Fire Potential",@"Seasonal Outlook", @"Fire Season Broadcast", nil];
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Set table size to one section.
return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
//When Weather is clicked on previous VC, the allwx list is displayed
if ([_weathertable isEqualToString:@"Weather"]) {
return [allwx count];
}
return 0;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *pstableID = @"MainCell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:pstableID];

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

if ([_weathertable isEqualToString:@"Weather"]) {
cell.textLabel.text = [allwx objectAtIndex:indexPath.row];
}

return cell;
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
if ([segue.identifier isEqualToString:@"showDWODetail"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
DWO_TableViewController *destViewController = segue.destinationViewController;
destViewController.dailywxtable = [allwx objectAtIndex:indexPath.row];
destViewController.title = destViewController.dailywxtable;
}
}

@end

最佳答案

您可以在此处切换到单个 UITableViewController 并根据所选类别使其显示相应的内容。这可能对您有所帮助。

在您的目标 View Controller 中,您可以声明一个变量并在您的 prepareForSegue 方法中使用它,如图所示,以确定您希望在目标 View Controller 上看到什么类型的内容。

destController.varName = @"setYourTypeHere";

现在您还可以根据您在表格 View 中单击的行在此处设置变量值。

在您的目标 View Controller 中,您可以使用 switchif...else 检查此值,并根据您的要求绑定(bind)适当的数据。

关于ios - 根据行选择转至 UITableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24156729/

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