选择UITableViewCell时更新UIView

时间:2014-01-08 14:44:10

标签: ios iphone objective-c uiview uitableview

我的应用程序在同一个故事板上有UITableView和自定义UIViewUIView根据选择加载自定义图表,并使用HighChart加载UIWebView(数据和html全部本地存储,不通过网络拉取)。

当我选择UITableViewCell时,视图永远不会显示。它加载子视图(我NSLog将其输出到控制台)并且所有数据都是正确的,但显示本身永远不会刷新。我已经尝试在{20}不同的地方坚持[myCustomView setNeedsDisplay],但我开始觉得这是其他的东西。

是否可能存在问题,因为我正在加载网络视图?在对UIView的异步调用准备好做任何事情之前,它是否实质上重绘了我的UIWebView?测试这个的最简单方法是什么?

更新了一些代码(跳过一些代码,我会按要求填写更多代码):

@implemention MainViewController

-(void)viewDidLoad {
    ***normal viewDidLoad stuff***

    _myCustomView = [[MyCustomViewClass alloc] initWithFrame: CGRectMake(0,_tableview.frame.origin.y + _tableview.frame.size.height,_tableview.frame.size.width, 176)];
}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    MyCustomJsonDataObject *dataObject = [self.jsonDataArray objectAtIndex:[indexPath row]];
    [_myCustomView redrawWithDataObject:dataObject];

}

@end

@implementation myCustomViewClass {
   UIScrollView *scrollView 
}

-(void)redrawWithDataObject:(MyCustomJsonDataObject *)dataObj {

   scrollView = [[UIScrollView alloc] initWithFrame:etc];

   // THere are 3 screens initialized: 1 chart data with a UIWebView, and two custom UIViews. 

   scrollView.contentSize = CGSizeMake(scrollView.size.width * 3, 176)

   ** initialize web view from custom class **
   [scrollView addSubview:webView];

   ** initialize custom view from custom class **
   [scrollView addSubview:UIView1];

   ** initialize custom view from custom class **
   [scrollView addSubview:UIView2];

   ** set some scrollView properties (scrollable, paging, etc) **

   [self addSubview:scrollView];
   [self setNeedsDisplay];

}

自定义UIWebView类从JSON对象获取数据,并在本地html文件中替换javascript占位符变量,然后将新文件反馈到webView中。其他两个视图只是一组简单的标签,用于填充自定义数据对象中的数据。

1 个答案:

答案 0 :(得分:0)

我想出了我的问题:

_myCustomView已经在故事板中定义,因此它正在初始化自己。当我在viewDidLoad中调用init方法时,看来我正在添加一个视图的SECOND实例,覆盖第一个,这就是为什么它显示为空白并且似乎没有刷新。当我在viewDidLoad中删除了视图的init方法时,它没有问题。