結果なし-UITableView iPhone

ios iphone objective-c uitableview
結果なし-UITableView iPhone

テーブルビューが空の場合、結果が表示されないというメッセージを表示しようとしています。 空のときに表示されるuilabelアプローチを行いましたが、上下にスクロールしようとすると「結果なし」が移動する連絡先などでAppleが行った方法ではないようです。 鉱山は1か所に留まります。

誰もがこれを行う方法を知っていますか?

結果なしセルを追加したと思いますか?

  9  3


ベストアンサー

Yes. 表示する結果がない場合は、次を実行します

  1. _noResultsToDisplay_またはその他の名前のブールフラグを作成します。

  2. 表示する結果がない場合は、「noResultsToDisplay = YES」に設定します。
    それ以外の場合は、「NO」に設定します。

  3. _numberOfRowsInSection_で、「if(noResultsToDisplay)return 3;」

  4. _cellForRowAtIndexPath_では、
    if(noResultsToDisplay && indexPath.row == 2)cell.textLabel.text = @" No Results ";

10


#pragma mark -
#pragma mark Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // Return the number of sections.
    return 1;
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    return 3;
}


// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    // Configure the cell...

    if (indexPath.row == 2) {
        cell.textLabel.text = @"Empty cell";
    }

    return cell;
}

3


それを行う2つの方法:自分で提案したように「結果セルなし」を作成し、tableViewControllerにBOOL resultIsEmpty = YESの状態を設定します。 cellForRowAtIndexPathで最初にこの空のBOOLをテストし、結果セルなしのみを返します。また、空の場合に1を返すことができるようにnumberOfRowsInSectionをチェックインすることを忘れないでください0)。

もう1つの方法は、テーブルビューにyインセットを作成し、そこにラベルを配置することです。 UITableViewはUIScrollViewのサブクラスであるため、これを実行できます。

self.tableView.contentInset = UIEdgeInsetsMake(heighOfNoResultLabel, 0, 0, 0);

次に、「resultsDidLoad」または新しいデータのデリゲートが呼び出されると、それが0であるかどうかをテストし、tableViewを挿入してそこにラベルを配置します。 0でない場合は、インセットを

self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0);

すべて0。 このプロパティをアニメーション化して、結果がない場合、TableViewが「スクロール」して「結果なし」ラベルが表示されるようにすることができます。

ボットソリューションは、ほぼ同じ量のコードについて有効です。 違いは、おそらくあなたが後でそれで何ができるかです。

0


テーブルと同じファームでラベルビューを維持することでこれを解決し、ラベルとテーブルの「hidden」属性を使用します(常に1つはYESで、もう1つはNOです)。

0


i have edited the accepted answer to be look like the no search results in tableView


    Create a boolean flag named noResultsToDisplay, or something else.
    1-If you have no results to display then set noResultsToDisplay = YES, set it to NO otherwise.
    2-(this step changed)In numberOfRowsInSection, if (noResultsToDisplay) return 1;
// 1 returned not 3

   3-(this step changed) In cellForRowAtIndexPath,

static NSString *CellIdentifier;
    if (noResultsToDisplay){
        CellIdentifier = @"Cell";
// in my case i use custom cell this step can be skipped if you use the default UITableViewCell
    }
    else{
       CellIdentifier = @"DocInqueryCell";
    }
 DocumentationInqueryCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

// don't forgt to add cell in your storyboard with identifier Cell and class your custom class , again this step can be skipped if you use the default cell

then
if (noResultsToDisplay) {
cell.textLabel.text = @"No Results";
}else{

do what you want in your custom cell

}

0


タイトルとURLをコピーしました