开发者

Reload UITableView conditionally based on SegmentedControl

I would like to reload a table view conditionally based on the value of a segmented control, when a button is tapped.

So in my buttonTapped method, i have this code which randomly selects an array item. In the else block i would like to remove the selected item from the array to prevent the same item being selected again, currently I remove it from the array...

But i would like the ability to return the app to the state before the button was tapped, perhaps by making a -mutableCopy of the array and then removing the item from that.

What potential options do i have to indicate that an item cannot be selected again? Grayed out? Color change? Remove row?

    if (selectionControl.selectedSegmentIndex == 0) {
        int r = arc4random() % [[[APP_DELEGATE itemsDictionary] objectForKey:category] count];
        NSLog(@"%i",[[[APP_DELEGATE itemsDictionary] objectForKey:category] objectAtIndex:r]);
    } else {
        //copyOfArray = [APP_DELEGATE.....]mutableCopy]; // Maybe?
        int r = arc4random() % [[[APP_DELEGATE item开发者_高级运维sDictionary] objectForKey:category] count];
        NSLog(@"%i",[[[APP_DELEGATE itemsDictionary] objectForKey:category] objectAtIndex:r]);
    }
    [[[APP_DELEGATE itemsDictionary] objectForKey:category] removeObjectAtIndex:r];


    //[copyOfArray removeObjectAtIndex:r]; // Maybe?
    [self.tableView reloadData];
}

In each of the tableView methods i would need to check the state of the selectionControl before returning the value from either the APP_DELEGATE or the copy.

Thanks.


I think what I'd do is access the "textLabel" member of the UITableCellView, and set the text color to grey.

You can them implement tableView:willSelectRowAtIndexPath: to return NIL when that row is pressed - which will make it so that row cannot actually be selected.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜