jsh*_*erk 2 iphone cocoa-touch objective-c ipad ios
好的,所以对于iPhone和Objective C和Cocoa Touch的编程来说有点新鲜,但无法弄清楚这一点.委托是自我时有很多信息,但我试图将其发送到另一个文件.
这是一些代码......我有以下方法(我通常称之为函数,但我认为方法是正确的术语) appDelegate.m
[GameUtil showAlertViewWithTag:1 delegate:self withTitle:@"" message:msg cancelButtonTitle:@"New game" otherButtonTitles:@"Main Menu", nil];
在GameUtil.h和.m我已正确设置showAlertViewWithTag,它工作正常.
我遇到的问题是,delegate:self部件......就像它的情况一样,当点击alertview上的按钮时,它将转到-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex位于我的appDelegate.m(当然,当使用self作为委托时).
但是,单击按钮时我想要它做的是将其发送到-(void)alertView:..另一个名为的文件中playField.m.
我正确设置了alertview playField.m(通过在playField.m中调用alertview with delegate:self进行测试).
基本上我很难说如何告诉appDelegate.m中的alertview使用playField.m中的委托而不是委托:self.
我想我需要#import playField.m或.h进入appDelegate.m,但除此之外,我迷失了所有的@protocol @interface的东西.
Baby步骤非常有用,例如"你需要将XYZ置于playField.h的顶部,将ABC放在playField.m的顶部".
我希望这个实现起来相当简单,而且我只是缺少一些简单的东西.
提前致谢 :)
首先,即使这样做的结果是委托方法将在另一个文件中,您应该将其视为"委托是另一个对象".
在您的情况下,委托对象是self,即App Delegate对象.(因为你在app委托实现中写这个)
为了使委托成为另一个对象,你首先需要在你的app委托中访问该对象的实例.
我假设你的playField文件包含一个playField类.(我本来称之为PlayField btw,类通常是大写的,对象(类的实例)不是,虽然它可以以任何方式工作.
在某个地方,你需要实例化一个playField对象,你有没有在某处做过?看起来像:
playField *pf=[[playField alloc] init];
Run Code Online (Sandbox Code Playgroud)
如果您还没有这样做,那么请在showAlertViewCode上方执行此操作.
为了让您的appDelegate中的类可用,请添加:
#import "playField.h"
Run Code Online (Sandbox Code Playgroud)
在你的appDelegate文件之上.
然后在您的alertview代码中,用您刚刚创建的对象替换self:
[GameUtil showAlertViewWithTag:1 delegate:pf withTitle:@"" message:msg cancelButtonTitle:@"New game" otherButtonTitles:@"Main Menu", nil];
Run Code Online (Sandbox Code Playgroud)
现在你的委托是pf对象,它是playField的一个实例,因此将从你的playField.m实现文件中调用委托方法.
希望这是有道理的!
| 归档时间: |
|
| 查看次数: |
2163 次 |
| 最近记录: |