有没有办法通过Objective-C中的Delegates发送对象

时间:2012-05-10 08:04:20

标签: iphone objective-c ios cocoa ipad

我有一个场景,我在等待uiwebview完全加载,然后在完成后从finishedWebViewLoading调用一个委托。但是,我想在完成加载作为另一个类的私有对象的对象时返回该webView。无论如何通过代表这样做?我不希望将uiwebview作为公共财产,因此我在我的主文件中使用了它。

感谢。

4 个答案:

答案 0 :(得分:2)

确定你可以这样做..在.h

@protocol yourClassProtocal <NSObject>

- (void) loadingFinsihForWebView:(UIWebView*)wv;

@end

并在webView委托webViewDidFinishLoad

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    [delegate loadingFinsihForWebView:webView];
}

答案 1 :(得分:0)

你的问题的答案是:是的。 但是,我相信您可能需要了解代理的工作方式以及如何创建代码,这篇文章可能会让您走上正确的道路:How does a delegate work in objective-C?

另外,请看一下这篇文章:http://blog.shoguniphicus.com/2011/10/17/writing-custom-delegate-in-objective-c/

答案 2 :(得分:0)

您可以使用:

 if([self.theDelegate respondsToSelector:@selector(loadData:)]) {
        [self.theDelegate performSelector:@selector(loadData:) withObject:theObject]; 

答案 3 :(得分:0)

我不确定我理解你的要求,但是你不能从(void)webViewDidFinishLoad:(UIWebView*)webView返回任何值,也不能改变代表签名。

另一方面,如果您打算从webViewDidFinishLoad调用另一个自定义委托方法,并且您希望它返回webView,那么这肯定是可能的。只需调用该自定义委托方法并将webView传递给它,然后使自定义委托方法返回它。

这假设您负责自定义委托方法签名的定义,例如:

@protocol CustomDelegateProtocol
    - (UIWebView*)myCustomDelegateMethod:(UIWebView*)view;
@end