iOS应用视图选择

时间:2014-07-27 12:37:05

标签: ios objective-c xcode uitableview

我想开发一个iOS应用程序,它可以从我的wordpress博客中获取所有文章,并将它们正确地列出来。每篇文章都有标题,图像和一些内容。对于第一个屏幕,我想制作类似于自定义UITableView的东西,但我不确定这是否是实现它的正确方法。

http://a2.mzstatic.com/us/r30/Purple2/v4/5c/70/05/5c7005b2-ab76-33ab-e32f-5f7e861ef5e9/screen568x568.jpeg

这是我想要在没有搜索栏的情况下做的事情。但是每篇文章都会以这种方式展示其图像,并且图像下方有标题(不需要内容预览)。如果我使用UITableView,我会有一个"分离"在所有图像之间,这不完全是在这里完成的方式。你知道我怎么能做到这样的事吗?我是否必须以编程方式创建我的图形对象,或者使用storyboard /界面构建器工具是否可行?

2 个答案:

答案 0 :(得分:2)

您应该使用自定义的UITableViewCell。以下是资源:

https://developer.apple.com/library/ios/documentation/userexperience/Conceptual/TableView_iPhone/TableViewCells/TableViewCells.html

http://www.idev101.com/code/User_Interface/UITableView/customizing.html

http://www.appcoda.com/customize-table-view-cells-for-uitableview/

您可以使用从UITableViewCell继承的XIB创建CustomCell类。我们将以下列方式在tableview类.m文件中添加类别。我认为这是应用于自定义单元格创建的最简单方法。

@interface UITableViewCell(NIB)
@property(nonatomic,readwrite,copy) NSString *reuseIdentifier;
@end
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 30;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *identifier=@"cell";
    CustomCell *cell=[tableView dequeueReusableCellWithIdentifier:identifier];
    if(cell==nil)
    {
         NSLog(@"New Cell");
        NSArray *nib=[[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
        cell=[nib objectAtIndex:0];
        cell.reuseIdentifier=identifier;

    }else{
        NSLog(@"Reuse Cell");
    }
    cell.lbltitle.text=[NSString stringWithFormat:@"Level %d",indexPath.row];
    id num=[_arrslidervalues objectAtIndex:indexPath.row];
    cell.slider.value=[num floatValue];
    return cell;
}
@end

答案 1 :(得分:0)

对于这种事情,UICollectionView是最好的。与UITableView完全相同的委托,更加灵活和可配置。你可以有正方形单元格,你可以设置单元格宽度,你可以向左或向右滚动等。它用于上面的截图,以及Instagram等。这是如何实现它。

在.h:

@interface MyViewController : UIViewController <UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout>   

在.m:

UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
UICollectionView *myCollectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, 320, 480) collectionViewLayout:flowLayout];
[myCollectionView setDelegate:self];
[myCollectionView setDataSource:self];
[myCollectionView setIndicatorStyle:UIScrollViewIndicatorStyleBlack];
[myCollectionView setScrollIndicatorInsets:UIEdgeInsetsMake(0, 0, 0, -4)];
[myCollectionView setBackgroundColor:[UIColor whiteColor]];
[myCollectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"CustomCell"];
[self.view addSubview:myCollectionView];

然后是委托方法:

-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView;
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section;
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath;
-(UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section;
-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section;
-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section;
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath;