1

自分で定義した長い tableViewCell にコンテンツを表示するには、スクロール ビューを作成し、スクロール ビューにスクロールできない tableView を追加します。

私のTollStatusViewController.hで

UITableView *selfTableView;
@property (retain, nonatomic) IBOutlet UIScrollView *fluxScrollView;

私のTollStatusViewController.mで

self.fluxScrollView.clipsToBounds = YES;
self.fluxScrollView.indicatorStyle = UIScrollViewIndicatorStyleBlack;
[self.fluxScrollView setContentSize:CGSizeMake(1400.0, 154.0)];

selfTableView = [[[UITableView alloc]initWithFrame:CGRectMake(0, 0, 1400.0, 154.0) style:UITableViewStylePlain] autorelease];
selfTableView.dataSource = self;

selfTableView.delegate = self;
selfTableView.scrollEnabled = NO;
[self.fluxScrollView addSubview:selfTableView];

およびデリゲート メソッド:

#pragma mark tableview-data-source

- (NSInteger)tableView:(UITableView *)_tableView numberOfRowsInSection:(NSInteger)section
{
    return 3;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)_tableView
{
    return 1;
}

- (CGFloat)tableView:(UITableView *)_tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.row == 0) {
        return 38.0;
    }
    if (indexPath.row == 1) {
        return 56.0;
    }
    if (indexPath.row == 2) {
        return 56.0;
    }
    return 0;
}

- (UITableViewCell *)tableView:(UITableView *)_tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    ManyColumnsViewCell *cellView = [_tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cellView == nil) {
        cellView = [[[ManyColumnsViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }


    return cellView;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

}

次に、fluxScrollView の水平スクロールを有効にして、長い manyColumnsViewCell にコンテンツを表示できるようにします。

しかし、tableView で 1 つの行をクリックすると、ヒントでクラッシュします。

2012-08-17 15:43:14.789 MScope[2261:13a03] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFType tableView:didSelectRowAtIndexPath:]: unrecognized selector sent to instance 0x7e87960'

そして、この機能を削除した後

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {

    }

クラッシュはありません。

4

1 に答える 1

1

ここで最も投票数の多い回答

私の TollStatusViewController は一時的に構築されたので、それをオブジェクトに保持し、オブジェクトの関数 -(void)dealloc で dealloc を保持すれば問題ありません。

于 2012-08-17T08:14:30.443 に答える