我正在嘗試爲iOS創建一個View工廠,並且我陷入了一些麻煩。視圖工廠應該能夠創建多個UIImageViews,MKMapViews或UIWebViews並將它們垂直添加到視圖中。我有一個Web視圖的問題,因爲我不得不等待webViewDidFinishLoad
。如果方法在實現UIWebViewDelegate
的ViewController中實現,並且將webviews的委託設置爲控制器,則一切正常。問題是我想把所有這些都放在一個單獨的類中,但是從來沒有調用過webViewDidFinishLoad
。有沒有辦法實現這一點? 部分增加創建查看工廠對於iOS
- (void)addPart
{
if (self.viewPartStrings.count != 0) {
NSString *viewPartString = [self.viewPartStrings objectAtIndex:0];
NSString *viewPartIdentifier = [self getViewPartIdentifier:viewPartString];
NSString *viewPartDefinition = [self getViewPartDefinition:viewPartString];
if ([viewPartIdentifier isEqualToString:kWeb]) {
[self createTextWebViewPart:viewPartIdentifier];
} else if ([viewPartIdentifier isEqualToString:kMap]) {
[self createMapViewPart:viewPartDefinition];
} else if ([viewPartIdentifier isEqualToString:kImage]) {
[self createImageViewPart:viewPartDefinition];
}
}
}
瀏覽次數:
- (void)createTextWebViewPart:(NSString *)viewPartText
{
WebViewPart *webViewPart = [[WebViewPart alloc]initWithFrame:[self getViewPartFrameForHeight:0]];
[webViewPart createViewForText:viewPartText];
[webViewPart setDelegate:self];
}
- (void)createImageViewPart:(NSString *)viewPartDefinition
{
//create image
}
- (void)createMapViewPart:(NSString *)viewPartDefinition
{
//create map
}
但這裏是一點,如果你需要任何代碼
代碼 告訴我。這種方法從來沒有被調用。若該類擴展NSObject的,而不是如果類擴展的UIView:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
CGRect frame = webView.frame;
frame.size.height = 1;
webView.frame = frame;
CGSize fittingSize = [webView sizeThatFits:CGSizeZero];
frame.size = fittingSize;
[webView stringByEvaluatingJavaScriptFromString:@"document.body.style.webkitTouchCallout='none';"];
int height = frame.size.height + 70;
[self addToView:webView forHeight:height];
}
編輯:我也試過在控制器這樣做:
@interface DetailController()
@property (nonatomic, strong) ViewPartsFactory *viewPartsFactory;
@end
然後:
- (void)setViewForModel:(DealModel *)model
{
//...
self.viewPartsFactory = [[ViewPartsFactory alloc]initWithViewParts: [descriptionParser getViewParts]];
UIView *view = [self.viewPartsFactory getView]
[scrollView addSubview:view];
//..
}
和
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[self.viewPartsFactory webViewDidFinishLoad:webView];
}
設置webview委託給控制器,但仍然沒有。
如果您至少可以在代碼中提供一個高級示例,那麼這將有所幫助。很難明白你的問題是什麼。 – brandonscript
我已經添加了一些代碼 – alecnash
啊。既然你把它放在另一個類中,你將不得不在新類中添加你自己的委託方法,並將它們連接到視圖控制器。 – brandonscript