无法访问其他视图的变量

时间:2017-10-15 11:49:35

标签: ios objective-c swift

UITapGestureRecognizer *gesture = (UITapGestureRecognizer *) sender;
    NSInteger userID = gesture.view.tag;

    UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"Main"
                                                         bundle:nil];
    OthersProfile *vc = (OthersProfile*)[storyboard instantiateViewControllerWithIdentifier:@"othersprofile"];
    NSString *strUserID = [NSString stringWithFormat:@"%ld", (long)userID];

    vc.userID = strUserID;
    [self.viewController.navigationController pushViewController:vc
                                                        animated:YES];

我正在尝试访问另一个视图的变量并分配一个值。

我将另一个视图上的userID var声明为

var userID = String()

但它说Property 'userID' not found on object of type 'OthersProfile *'?

我知道如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

检查var及其父类的访问修饰符。

此声明

class OthersProfile:UIVIewController {
    var userID = String()
}

不会总是暴露你的内部变量。这取决于您的项目设置。

您可以通过按住Command键来查看“MyModule-Swift.h”合成标题的内容,以查看Swift编译器公开的内容以及它如何将Swift属性转换为Objective-C

你想得到这样的东西

SWIFT_CLASS("_TtC5MyModule22OthersProfile")
@interface OthersProfile : UIViewController
@property (nonatomic, copy) NSString* _Nonnull userID;

最简单的方法是开始将无法访问的内容标记为publicopen,例如

public class OthersProfile:UIVIewController {
    var userID = String()
}

class OthersProfile:UIVIewController {
    public var userID = String()
}

稍后,如果重要,您可以关闭访问权限。

答案 1 :(得分:-1)

我对目标C一无所知,但对我来说......可能问题是你的演员。

请使用X-Code验证您的VC是什么类型.. probabily是一个ViewControler ...而不是您的CustomViewControler。