从tableviewcell拖动到不自动segueing的viewcontroller

时间:2013-06-16 16:24:40

标签: objective-c uitableview storyboard segue

我正在尝试在此项目中使用Storyboards。我从一个静态tableview单元格拖动到一个新的viewcontroller select push。

当我运行应用程序并单击我在上一步中拖动的tableviewcell时,没有任何反应?

我不确定我是否通过在tableviewcontroller类中添加以下方法来解决问题。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier1 = @"Cell1";

    UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier1];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier1];
    }

    [cell.textLabel setFont:[UIFont fontWithName:@"GothamRounded-Light" size:18]];
    cell.textLabel.backgroundColor = [UIColor clearColor];
    cell.detailTextLabel.backgroundColor = [UIColor clearColor];
    [cell.detailTextLabel setFont:[UIFont fontWithName:@"GothamRounded-Light" size:12]];
    cell.contentView.backgroundColor = [UIColor statOffWhite];

    if (indexPath.row == 0) {
        cell.textLabel.text = @"Profile";
    }
    else if (indexPath.row == 1) {
        cell.textLabel.text = @"Support";
    } 
    else if (indexPath.row == 2) {
        cell.textLabel.text = @"Share";
    }
    else if (indexPath.row == 3) {
        cell.textLabel.text = @"About";
    }
    else if (indexPath.row == 4){
        cell.textLabel.text = @"";
        cell.frame = CGRectMake(0, 0, self.view.bounds.size.width, 200);
        UIImageView *watermark = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"watermark.png"]];
        watermark.frame = CGRectMake((cell.frame.size.width/2) - (watermark.image.size.width/2), 80, watermark.image.size.width, watermark.image.size.height );
        [cell addSubview:watermark];
    }

    return cell;
}

//更新////////

我拿出了cellForRowAt方法,故事板工作正常。但是,由于我已经取出了该方法,我如何将我的单元格上的字体设置为不是Xcode选择的自定义字体?我已将该字体包含在我的项目中,我随处可用。

1 个答案:

答案 0 :(得分:0)

您对cellForRowAtIndexPath:的实施会发生什么?您正在从头开始创建单元格并覆盖故事板的单元格(因此您的segue未被触发)。

如果您在故事板中定义了静态单元格,则不应自行出列并创建单元格。如果您的类是UITableViewCellController的子类,则可以调用super的实现并使用返回的单元格。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [super tableView:tableView cellForRowAtIndexPath:indexPath];

    // Customize your cell here
}

请注意,这样做没有多大意义:您在cellForRowAtIndexPath:方法中所做的所有事情都可以而且应该在故事板中完成。

如果您确实需要以编程方式自定义静态单元格,那么可以选择在视图控制器中定义此单元格的出口,并使用适当的方法(例如viewDidLoad)自定义单元格。