gpt4 book ai didi

ios - 单击时将 TableView 单元格编号传递到另一个 View ,一开始始终为 null

转载 作者:行者123 更新时间:2023-11-29 23:17:02 26 4
gpt4 key购买 nike

我已经构建了一个 UIViewController 将 tableview,添加了 didSelectRowAtIndexPath 来获取按下的行的索引,然后设置一个全局变量来保存行号,以便在下一个 View Controller 中使用它

但是,当我单击 TableView 单元格时,它会打开其他事件并从互联网加载内容,但是行号为零,直到其他 View Controller 加载数据并显示它!传递的数据对于从 MYSQL 中选择项目至关重要

这是获取行号并将其存储在名为 catIDTemp 的外部变量中

didSelectRowAtIndexPath: (NSIndexPath *)indexPath
{
row = indexPath.row;
NSLog(@"categories %ld", (long)row);
catIDTemp = [NSString stringWithFormat:@"%ld", (long)row];
}

当从其他 View Controller 读取 catIDTemp 时,如下所示

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

NSLog(@"valueeee %@", catIDTemp);

alertView = [[UIAlertView alloc] initWithTitle:@"loading items..." message:nil delegate:nil cancelButtonTitle:nil otherButtonTitles: nil];
UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
[indicator startAnimating];
[alertView setValue:indicator forKey:@"accessoryView"];
[alertView show];

self.AllItemsTableView.delegate = self;
self.AllItemsTableView.dataSource = self;

feedItems = [[NSArray alloc] init];
ConnModel = [[AllItemsConnectModel alloc] init];
ConnModel.delegate = self;
[ConnModel downloadItems];
}

它加载 catIDTemp 为 null 的数据!!!!!!

也可以使用上面所示的 nslog它打印

2014-12-29 19:40:07.551 appname[1814:469443] valueeee (null)
2014-12-29 19:40:07.568 appname[1814:469443] categories 0

为什么它从第二个 View 打印“valueeee”,然后从第一个 View 打印“catrgories”!

要从第一个 View 移动到第二个 View ,我按下表格单元格“单击鼠标右键”,将其拖动到第二个 View ,释放并设置为“模型”

在让第二个 View 启动 mysql 查询之前,我需要传递变量 catIDTemp!

我设置了一个断点并测试了代码。

似乎是在调用第一个ViewController中的didSelectRowAtIndexPath之前启动了第二个ViewController!这使得 catIDTemp 一开始总是为空!

如何在打开第二个 View 之前设置行号?

最佳答案

在 SecondViewController 类中创建 catIDTemp 属性

@property (nonatomic, retain) NSString *catIDTemp;

并传递didSelectRowAtIndexPath中的值

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
row = indexPath.row;
NSLog(@"categories %ld", (long)row);

SecondViewController *second = (SecondViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"StoryBordIdentifier"];;

second.catIDTemp = [NSString stringWithFormat:@"%ld", (long)row];


[self presentViewController:second animated:YES completion:nil];
}

从 Storyboard中删除seague并更改如上所示的代码。

关于ios - 单击时将 TableView 单元格编号传递到另一个 View ,一开始始终为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27693349/

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