Objective c 如何从另一个控制器访问UILabel IBOutlet中的文本?
我的程序是一个简单的计算器。主视图连接到计算器底部的CalcViewController.h/.m,子视图顶部的100个点通过按钮显示。当用户单击显示的子视图按钮时,子视图的其余部分会向上滑动到标签的底部,其中显示输入编号。子视图(AdvancedView)上现在只有一个按钮(sqrt)。当按下此键时,我希望获得标签中当前的数字,并将其发送到模型,以对其执行平方根法。我唯一的问题是UILabel IBOutlet*显示设置在我的CalViewController中,而不是我也需要它的AdvancedView中。我试着将CalcViewController.h导入我的AdvancedView.h,然后合成一个指向CalcViewController的*mainView指针,但是当我调用Objective c 如何从另一个控制器访问UILabel IBOutlet中的文本?,objective-c,ios,xcode,Objective C,Ios,Xcode,我的程序是一个简单的计算器。主视图连接到计算器底部的CalcViewController.h/.m,子视图顶部的100个点通过按钮显示。当用户单击显示的子视图按钮时,子视图的其余部分会向上滑动到标签的底部,其中显示输入编号。子视图(AdvancedView)上现在只有一个按钮(sqrt)。当按下此键时,我希望获得标签中当前的数字,并将其发送到模型,以对其执行平方根法。我唯一的问题是UILabel IBOutlet*显示设置在我的CalViewController中,而不是我也需要它的Advanc
double currentText = [self.mainView.display.text doubleValue];
在我的高级视图中,如果显示中有一个数字,则仍然获取0.000000。我也在网上搜索了很多解决方案,不断遇到协议,但我似乎无法完全理解这个概念。回到我的问题:如何从另一个控制器类访问UILabel IBOutlet*显示中的文本?以下是我正在使用的代码:
CalcViewController.h
#import <UIKit/UIKit.h>
@interface CalcViewController : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *display;
@end
AdvancedView.h
#import <UIKit/UIKit.h>
@interface AdvancedView : UIView
@end
注意:我不想再占用model类的屏幕,所以我把它删掉了。这只是一个典型的模型。您现在正在做的是在AdvancedView中创建CalcView控制器的新视图 用简单的语言概括一下
static CalcViewController *view;
然后添加一个方法(在.h文件中声明…在m中定义)
现在就用
double currentText = [[CalcViewController getCalcViewController].display.text doubleValue];
你的答案的第一部分现在完全有道理了。但我在导入的上面添加了静态CalcViewController*视图,得到了错误:未知类型名。然后,我向advancedView.h声明了getCalcViewController类方法,结果出现错误:应为类型。当我在.m中定义getCalcViewController时,我得到一个错误:使用未定义的标识符“view”。至于“视图”错误,我猜我需要在AdvancedView中声明该属性。其他错误呢?好的..在CalcViewController.m中的import语句之后添加静态CalcViewController*视图我把它与本机iOS数据类型混淆了。。这样做..然后按照回答中的其余步骤进行确定,我消除了所有错误,但是当我在标签中输入9,点击高级功能按钮以显示高级视图并点击sqrt按钮时,0.000仍然被分配给currentText:double currentText=[[CalcViewController getCalcViewController].display.text doubleValue];NSLog(@“%f”,currentText);在双currentText=。。。。。尝试更新其值。。。。也就是说,做相反的操作。更改其文本,然后获取值。。看看它是否仍然是0.0
static CalcViewController *view;
+ (CalcViewController *) getCalcViewController;
{
if (view == nil)
{
view = [[CalcViewController alloc] init];
}
return view;
}
double currentText = [[CalcViewController getCalcViewController].display.text doubleValue];