gpt4 book ai didi

ios - 设置另一个 UIViewController 的属性

转载 作者:行者123 更新时间:2023-11-28 20:12:10 24 4
gpt4 key购买 nike

在我的 DetailViewController.h 中,我声明了属性 * 类型,如下所示:

@interface DetailViewController : UIViewController
@property (strong, nonatomic) NSString *type;
@end

然后我得到一个 ListViewController,它是一个包含 TableView 的 UIViewController。ListViewController.h 看起来像这样:

@interface ListViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
@end

在我的 ListViewController.m 中,我想更改 * 类型的值,我很快就会切换 View ( View 切换工作正常)。

我通过添加以下内容来做到这一点:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UINavigationController * navigationController = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailController"];
DetailViewController * detailController = [[DetailViewController alloc] init];

detailController.type = @"video";

NSLog(@"Type: %@", detailController.type);

[self.navigationController pushViewController:navigationController animated:YES];
}

当我在这个 block /函数的第二行放置一个断点时,我得到 detailController with in it * type。当我在几行之后使用 NSLog 时,它返回“(null)”。 View 已更改,但未设置类型。

我不知道我做错了什么?有人对此有解决方案或可以指出我们正在解释的事情吗?

因为我尝试搜索答案,但找不到与我的问题等效的任何内容,或者我使用了错误的搜索词..

最佳答案

在您的 didSelectRowAtIndexPath: 方法中更改以下行`

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

DetailViewController * detailController = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailController"];;

detailController.type = @"video";

NSLog(@"Type: %@", detailController.type);

[self.navigationController pushViewController: detailController animated:YES];
}`

在您的 Storyboard中选择 DetailViewController 并将 Storyboard ID 指定为“DetailController”。确保您的 ListViewController 嵌入到 UINavigationController 中,您可以通过选择 ListViewController 并转到 editor->Embed in-> 来实现导航 Controller 。按照这些步骤操作,您的问题就会得到解决。

或者你可以从你的 ListViewController 到 DetailViewController 并使用

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSIndexPath *path = [self.tableView indexPathForSelectedRow]; //create tableview outlet
[segue.destinationViewController setType:@"video"];
}

关于ios - 设置另一个 UIViewController 的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19811989/

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