私はiOS開発の初心者です。
テーブルが空かどうかを確認したい。もしそうなら、私はしたい:
1行目の高さを上げて表示"No new messages!"
また
表を取り除き"No new messages"
、ページの中央に表示するだけです。
どうすればいいですか?
私はiOS開発の初心者です。
テーブルが空かどうかを確認したい。もしそうなら、私はしたい:
1行目の高さを上げて表示"No new messages!"
また
表を取り除き"No new messages"
、ページの中央に表示するだけです。
どうすればいいですか?
(テーブルビューに入力したい配列があると仮定しましょう。これは、テーブルビューにデータを入力するための非常に標準的な方法です。この理論上の配列を と呼びましょうdataArr
。)
データ ソース内:
- (NSUInteger)tableView:(UITableView *)tv numberOfRowsInSection:(NSUInteger)section
{
if ([dataArr count] == 0) {
// empty table
return 1;
}
return [dataArr count];
}
- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)ip
{
UITableViewCell *cell = [tv dequeueReusableCellWithIdentifier:@"someCellID"];
if (cell == nil)
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"someCellID"] autorelease];
if ([dataArr count] == 0) {
// empty table
cell.textLabel.text = @"No new messages";
} else {
// configure as normally
}
return cell;
}
あなたのデリゲートで:
- (CGFloat)tableView:(UITableView *)tv heightForRowAtIndexPath:(NSIndexPath *)ip
{
if ([dataArr count] == 0) {
// empty table
return 88.0f; // 2 times the normal height
}
// else return the normal height:
return 44.0f;
}
これは役立つはずです:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([tableView numberOfRowsInSection:1] == 0) {
return 200;//some other height
}else{
return 44;
}
}
表示しようとしているメッセージの配列があると思います
関数を使用して、セルのカスタム高さを定義できます
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (messages.count == 0)
return 80;
else
return 44;
}
次に、セルを作成するとき:(「新しいメッセージなし」セルが通常のセルとは異なるセル識別子を持っていることを確認して、セルの再利用が混乱しないようにしてください)
- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if (messages.count == 0) {
// create the "No New Messages" cell
}
else {
// create regular cells
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
基本的に、データ ソースに対してチェックして、およびにメッセージがないかどうかを確認します。- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
例えば:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if ([data count] == 0) return 100;
else return 44;
}