C++ 在iOS中,如何从viewController以外的类更改按钮的文本?

C++ 在iOS中,如何从viewController以外的类更改按钮的文本?,c++,ios,objective-c,C++,Ios,Objective C,我想从我在项目中使用的另一个类(objective-C++)中更改UIBarButtonItem的文本 我在myViewController中有一个IBMOutlet myButton设置,我可以成功地执行以下操作: [ myButton setTitle:@"newTitle" ]; 在myViewController.mm中 现在我想从我在项目中使用的myCppClass中执行同样的操作 myCppClass有没有办法访问myViewController的myButton? 我应该使用某种

我想从我在项目中使用的另一个类(objective-C++)中更改UIBarButtonItem的文本

我在myViewController中有一个IBMOutlet myButton设置,我可以成功地执行以下操作:

[ myButton setTitle:@"newTitle" ];
在myViewController.mm中

现在我想从我在项目中使用的myCppClass中执行同样的操作

myCppClass有没有办法访问myViewController的myButton? 我应该使用某种类型的授权机制吗

我对Ios和objective-C相当陌生

谢谢


爸爸,简而言之,不要。应将视图控制器的视图视为私有视图。相反,在VC中添加一个类似ChangeButtontile的方法。然后从其他类调用该方法。

在myViewController类中创建一个方法以更改按钮标题,然后按照此答案中描述的说明从myCppClass调用该方法:

如何从一个类调用另一个类中的方法(iOS)
以上答案是正确的,但从你的评论来看,我怀疑你还不高兴

如果您非常懒惰,并且不介意VC的所有实例中的字符串都相同(实际上通常是这样),那么您可以简单地为字符串名称编写一个getter和setter,作为目标类中的类变量。这样,您甚至不需要访问类的实际实例,只需要访问它的名称。俗气但超级容易

正如其他人所指出的,不要试图直接在不同的VC上修改按钮。传递消息,并在加载时让所属VC执行此操作

嗯,将消息转发(给新的VC)非常容易。在每个VC类代码的底部都有注释掉的#pragma导航部分,它为您提供了目标VC的句柄。将其强制转换为适当的类型,然后在目标VC实例中设置属性。在您的情况下,创建一个公共属性NSString,它保存目标VC中的按钮文本,并在导航部分中进行设置。这可以是任何类,甚至是委托,但一个简单的字符串应该可以工作

向后(向以前的风投)传递消息也可以采用同样的方式,但它开始变得混乱。你可以通过编程的方式在VC的堆栈中后退一步,找到一个VC的特定(实例)。的一个答案给出了返回视图控制器的示例代码

但如果它只是转发通信,通过

  • (void)prepareForSegue:(UIStoryboardSegue*)segue发送方:(id)发送方

在C++代码的底部和下面的注释行非常简单和安全。

有什么原因你不能改变C++类到目标C++吗?这应该允许您直接调用该方法。如果不是,请参阅这个问题的答案:对于创建一个C/C++包装器的目标C++函数的一个很好的解释。对不起,我不是很清楚。我编辑了我的问题以反映这一点。既然它属于另一个类,我该如何“直接调用该方法”呢?谢谢。我不知道如何“从我的另一个类调用该方法”。我如何让我的其他班级知道我第一堂课的方法?