2016-06-16 3 views
-3

ここではこのテーブルビューのセルにボタンを作成しましたが、レスポンスが "1"になったら非表示にします。私はそれを次のようにしていますが、まだセルはボタンを表示していません。どうすればいいのですか?特定のJSON応答を取得した後、tableViewでUIButtonを非表示にする方法

- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath { 

MyVideos *myvidoeclips = [park objectAtIndex:indexPath.row];  

UILabel *lbl2=(UILabel*)[cell viewWithTag:777]; 

NSString *stateus = [myvidoeclips valueForKey:@"state"]; 

    if([stateus isEqual: @"0"]){ 

    [lbl2 setText:@"Under Moderation"]; 
} 
if([stateus isEqual: @"1"]){ 

    [lbl2 setText:@"Published"]; 

} 
if([stateus isEqual: @"4"]){ 

    [lbl2 setText:@"Rejected"]; 
} 
lbl2.textColor=[UIColor whiteColor]; 

// Here is my button which i want to hide 


UIButton *button=[[UIButton alloc]initWithFrame:CGRectMake(216, 130, 64, 30)]; 
    NSString *strFlagValue = [[NSString alloc]init]; 

strFlagValue = [myvidoeclips valueForKey:@"state"]; 

if ([strFlagValue isEqualToString:@"1"]) 
{ 
    flag = true; 
} 
else 
{ 
    flag = false; 
} 

if (flag) 
{ 
    button.hidden = true; 
} 
else 
{ 
    button.hidden = false; 
} 




[button addTarget:self action:@selector(yourEditButtonClicked:) forControlEvents:UIControlEventTouchUpInside];  button.tag = indexPath.row; 
[button setImage:[UIImage imageNamed:@"btn-details.png"] forState:UIControlStateNormal]; 
[cell.contentView addSubview:button]; 


NSLog(@"sender.tag cell is%ld ",(long)button.tag); 
} 
+1

あなたは私たちでコードを共有することができますか? – iMHitesh

+0

@vicky - プロジェクトから必要なコード全体をコピーし、zipにして、drive.google.comでアップロードし、URLを共有してすべてにダウンロードします。誰もがダウンロードして、あなたに解決策を与えることができます。 – Hasya

答えて

1

cellForRowAtIndexチェックフラグにあります。

旗があなたのJSONレスポンス(アレイ/辞書)

BOOL flag; 

NSString *strFlagValue = [[NSString alloc]init]; 

strFlagValue = [[array objectAtIndex:indexPath.row] valueForKey:@"Key_From_You_Get_1_Or_0"]; 

if ([strFlagValue isEqualToString:@"1"]) 
{ 
    flag = true; 
} 
else 
{ 
    flag = false; 
} 

if (flag) 
{ 
    cell.button.hidden = true; 
} 
else 
{ 
    cell.button.hidden = false; 
} 

に応じて、真または偽となります。またcellForRowAtIndexであなたのセルは識別子で再利用可能である必要があります確認してください。

JSON(配列)から毎回 "1"または "0"を取得する場合は、ソートコードの下で十分です。

BOOL flag = [[[array objectAtIndex:indexPath.row] valueForKey:@"Key_From_You_Get_1_Or_0"] boolValue]; 

cell.button.hidden = flag; 

全体cellForRowAtIndexPath(間違った方法であなたの質問に書いているロジック)静的テーブルセルの場合

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

static NSString *CellIdentifier = @"ID_CustomCell"; 

CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if(cell == nil){ 

    cell = (CustomCell *)[[[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil] objectAtIndex:0]; 

    cell.selectionStyle = UITableViewCellSelectionStyleNone; 
} 

BOOL flag = [[[array objectAtIndex:indexPath.row] valueForKey:@"Key_From_You_Get_1_Or_0"] boolValue]; 

cell.btn1.hidden = flag; 

NSString *strFlagValue = [[NSString alloc]init]; 

strFlagValue = [[array objectAtIndex:indexPath.row] valueForKey:@"Key_From_You_Get_1_Or_0"]; 

if ([strFlagValue isEqualToString:@"1"]) 
{ 
    flag = true; 
} 
else 
{ 
    flag = false; 
} 

if (flag) 
{ 
    cell.btn1.hidden = 1; 
} 
else 
{ 
    cell.btn1.hidden = 0; 
} 


return cell; 
} 
+0

はいセルは再利用可能ですが、フラグをチェックする方法と、 "1"はボタンを隠すだけで正しい応答を得ています。 – vicky

+0

更新された回答を参照してください。 – Hasya

+0

strFlagValueがコンソールで「1」と表示されている理由フラグ=いいえフラット= trueの行@Hasya – vicky

0

、UIButtonのIBOutletを作成し、JSONデータを使用して状態を確認しながら、非表示にします。

ダイナミックテーブルセルでは、ボタンを非表示にする必要がある行番号を識別する必要があります。

例: - 複数の辞書が含まれている配列があります。

NSDictionary* dict = [array objectAtIndex:indexPath.row]; 
BOOL isButtonHidden = [dict objectForKey:@"KeyName"]; 
cell.button.hidden = isButtonHidden 

・ホープ、このソリューションのヘルプyou..Thanksは

+0

ボタンを作成するためのコードがありますか? – vicky

+0

このようにしてこのiboutletをstoryboard/xib @property(weak、nonatomic)のtableviewセルで作成されたボタンに接続してください。IBOutlet UIButton * cancelButton;しかし、あなたが静的なテーブルビューのセルを使用していることを確認してください –

+0

それは静的ではありません静的なのは、とにかく助けてくれました@Neha – vicky

関連する問題