使用 presentViewController 方法在另一个 VC 中设置属性

Posted

技术标签:

【中文标题】使用 presentViewController 方法在另一个 VC 中设置属性【英文标题】:Setting a property in another VC by using presentViewController method 【发布时间】:2017-12-04 07:12:20 【问题描述】:

我正在尝试在另一个 viewController 类中设置 .text 属性,但它没有设置。如何在不使用 segue 的情况下实现此结果?

AccountTypeVC *vc = (AccountTypeVC *)[mainStoryboard instantiateViewControllerWithIdentifier:@"AccountTypeVC"];
AccountTypeVC.serviceTitle.text = [tableData objectAtIndex:indexPath.row];
[self presentViewController:vc animated:NO completion:nil];

AccountTypeVC.h

@property (strong, nonatomic) IBOutlet UILabel *serviceTitle;

【问题讨论】:

【参考方案1】:

instantiateViewControllerWithIdentifier 之后,所有的 UI 元素都不需要初始化。建议在调用视图控制器的viewDidLoad 后将所有 UI 元素与数据绑定。

AccountTypeVC 中添加另一个属性。

@property (strong, nonatomic) NSString *serviceTitleText;

并将其设置为viewDidLoad方法中的标签。

- (void)viewDidLoad 
    [super viewDidLoad];
    self.serviceTitle.text = self. serviceTitleText;

并在呈现AccountTypeVC 之前设置serviceTitleText 属性而不是标签。

AccountTypeVC *vc = (AccountTypeVC *)[mainStoryboard instantiateViewControllerWithIdentifier:@"AccountTypeVC"];
vc.serviceTitleText = [tableData objectAtIndex:indexPath.row];
[self presentViewController:vc animated:NO completion:nil];

【讨论】:

我现在将 NSString 更改为 NSMutableArray 并且它不起作用,为什么?

以上是关于使用 presentViewController 方法在另一个 VC 中设置属性的主要内容,如果未能解决你的问题,请参考以下文章

presentViewController 的动画属性

如何使用 presentViewController 呈现 iOS 键盘扩展

IIViewDeckController 和 presentViewController

透明 ViewController 可与 presentViewController 一起使用,但不能与 pushViewController 一起使用

PresentViewController切换界面

使用xib ios7从presentviewcontroller准备推送segue