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 *'?
我知道如何解决这个问题?
答案 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;
最简单的方法是开始将无法访问的内容标记为public
或open
,例如
public class OthersProfile:UIVIewController {
var userID = String()
}
或
class OthersProfile:UIVIewController {
public var userID = String()
}
稍后,如果重要,您可以关闭访问权限。
答案 1 :(得分:-1)
我对目标C一无所知,但对我来说......可能问题是你的演员。
请使用X-Code验证您的VC是什么类型.. probabily是一个ViewControler ...而不是您的CustomViewControler。