そこには と があり、UITableViewController
UIViewの下にとプロトタイプ セルがあります。UITableView
UIView
の内容UIView
がDynamicなので、1行目のDynamicの原点(y)を変更したいです。
UIView
フレームと境界を変更すると
self.albumView.bounds=CGRectMake(0,0,self.albumView.frame.size.width, self.albumView.frame.size.height+100);
self.albumView.frame=CGRectMake(0,0,self.albumView.frame.size.width, self.albumView.frame.size.height+100);
UIView が重なって行を非表示にします (ヘッダーしか見えません)
しかし、同じコードを書いたとき
は(void)viewWillAppear
問題なく動作しますが、リクエストからデータをまだ受け取っていないため、高さがわからないという問題があります。
私は試した
[self.view setNeedsDisplay];
[self.tableView setNeedsDisplay];
しかし、何も機能していないようです。どうすればこれを修正できますか?
TableViewController レイアウトからスナップを追加しています
http://preview.otherlap.com/snap.png (私は新しいユーザーなので画像を追加できないのでリンクがあります)
UIView の高さは、json データに従って動的です。私が望むのは、テーブルの最初の行の原点 (y) の位置を変更することだけです。
ここにサンプルコード
-(void)viewWillAppear:(BOOL)animated{
//self.albumView.bounds=CGRectMake(0,0,self.albumView.frame.size.width,self.albumView.frame.size.height+100);
//self.albumView.frame=CGRectMake(0,0,self.albumView.frame.size.width,self.albumView.frame.size.height+100);
}
- (void)viewDidLoad
{
[super viewDidLoad];
...load some data from server
}
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
[jsonData setLength:0];
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
[jsonData appendData:data];
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
self.albumView.bounds=CGRectMake(0,0,self.albumView.frame.size.width,self.albumView.frame.size.height+dynamicHeight); self.albumView.frame=CGRectMake(0,0,self.albumView.frame.size.width,self.albumView.frame.size.height+dynamicHeight);
}
ViewWillAppear で UIView の高さを設定すると、最初のセルの原点が正しく移動します。connectionDidFinishLoad で高さを設定すると、セルとオーバーラップします。
編集:答えが見つかりました。自分で答えを見つけました..
StoryBoard の TableView の上に UiView を追加すると、自動的に tableHeaderView になります
だから解決策はそれだった
CGRect newFrame = self.tableView.tableHeaderView.frame;
newFrame.size.height = DynamicHeight;
self.tableView.tableHeaderView.frame = newFrame;
[self.tableView setTableHeaderView:self.tableView.tableHeaderView];