Code Monkey home page Code Monkey logo

zkrevealingtableviewcell's Introduction

ZKRevealingTableViewCell

A Sparrow-style Implementation of Swipe-To-Reveal


Sparrow for iOS has a different kind of swipe to reveal; its version of the control is that the content view pans with your finger or optionally could swipe.

This Swipe-To-Reveal implementation will pan with your finger and can swipe. It works left, right, or left and right.


Here's a preview:

image


Usage

Simply link QuartzCore.framework and use the ZKRevealingTableViewCell class for your UITableViewCell. To change the reveal view, simply modify the backView property of the cell.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
	ZKRevealingTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
	
	if (!cell) {
		cell = [[[ZKRevealingTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"] autorelease];
		cell.delegate       = self;
		cell.selectionStyle = UITableViewCellSelectionStyleNone;
	}
	
	return cell;
	
}

If you want only one item selected at a time, you could do something like this in UITableViewController subclass:

#pragma mark - Accessors

- (ZKRevealingTableViewCell *)currentlyRevealedCell
{
	return _currentlyRevealedCell;
}

- (void)setCurrentlyRevealedCell:(ZKRevealingTableViewCell *)currentlyRevealedCell
{
	if (_currentlyRevealedCell == currentlyRevealedCell)
		return;
	
	[_currentlyRevealedCell setRevealing:NO];
	
	if (_currentlyRevealedCell)
		[_currentlyRevealedCell autorelease];
	
	[self willChangeValueForKey:@"currentlyRevealedCell"];
	_currentlyRevealedCell = [currentlyRevealedCell retain];
	[self didChangeValueForKey:@"currentlyRevealedCell"];
}

#pragma mark - ZKRevealingTableViewCellDelegate

- (BOOL)cellShouldReveal:(ZKRevealingTableViewCell *)cell {
	return YES;
}

- (void)cellDidReveal:(ZKRevealingTableViewCell *)cell {
	NSLog(@"Revealed Cell with title: %@", cell.textLabel.text);
	self.currentlyRevealedCell = cell;
}


#pragma mark - UIScrollViewDelegate

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
	self.currentlyRevealedCell = nil;
}

To programmatically reveal/hide the backView, set the revealing property.

// Reveal the backView
cell.revealing = YES;

// Hide the backView
cell.revealing = NO;

Changing the backgroundColor

You may have trouble changing the background color of your ZKRevealingTableViewCell instance. The issue that happens is that the contentView's white background color is appearing on the edges of the cell. To fix this just change the contentView's background with the cell's background at the same time.


License

This is licensed under MIT. Here is some legal jargon:

Copyright (c) 2012 Alex Zielenski

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

zkrevealingtableviewcell's People

Contributors

alexzielenski avatar chadpod avatar dmallory avatar rnystrom avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zkrevealingtableviewcell's Issues

Not revealing with iOS 6 autolayout

Under iOS 6, create a ZSRevealingTableViewCell from storyboard (auto-layout enabled).

One can swipe the cell, but it always drop back to original position.

As soon as auto-layout is disabled, everything works perfectly.

No support for cells with alternating row colors

I like this project for its simplicity, I think it's the easiest way to get this kind of feature in an iOS app. My only gripe is that it doesn't support cells with alternating row colors. I tried using this in my current project (which has alternating row colors for the cells) and it turned every cell the same color and made the backgroundViews of the textLabels that naturally come with a cell, gray. By alternating row colors I mean that all even numbered cells in each row are one color and all the odd numbered cells are another color. Kinda like the app store's tableView. I would like to use this in my latest project, Fiddles (the first ever jsFiddle client for iOS) but I need ZKRevealingTableViewCell to Support alternate row colors.

Currently this is the way I am implementing alternate row colors. If you need more information to fix this issue please let me know

Not Working When Using A Custom Cell

When I setup a cell in the storyboard, and set the style as a custom cell, it doesn't work. If I change it to any other style (e.g. Basic, Detail, Subtitle) it works fine. Is there any way to make this work with a custom cell? I would like to place my own elements in the cell.

Programmatically Reveal (e.g., for didSelectRowAtIndexPath)

Hi there,
thank you for the great implementation!
I'm looking for a way to programmatically reveal the backView when a cell is clicked

What I tried is adding "_slideOutContentViewInDirection" to the .h-File and access it manually like this:

  • (void)tableView:(UITableView )tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    ZKRevealingTableViewCell *cell = (ZKRevealingTableViewCell
    )[tableView cellForRowAtIndexPath:indexPath];

    [cell _slideOutContentViewInDirection:ZKRevealingTableViewCellDirectionLeft];
    }

Basically this works fine, but I'm rather sure that I'm messing things up internally by accessing this private method. What do I need to take care about myself now?

Thanks for your help!

Know the revealed row

How can I catch what row is revealed? I need to send parameters to my custom back view and run methods with parameters tapping some uibuttons.

Problems customizing background of cell

Hi,

I have a custom view which I want to use as the background for the tableview cell. But it doesn't seem to work.

cell.backgroundView = [[[CustomCellBackground alloc] init] autorelease];

Any one knows how to fix this?

Version update

Hey,
Could you please update the version number tag in order to include the latest changes and be installable via CocoaPods?
Thanks

New tag for CocoaPod

Hi,

The current cocoapod version is out of date (i.e. it doesn't currently work with storyboards). Could you please create another tag so we can update the 'pod?

Thanks
Chris

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.