English 中文(简体)
带有单个自定义单元格的UITableView?(iPhone)
原标题:UITableView with a single custom Cell? (iPhone)

I have run into a bit of a problem. Usually when dealing with UITableView I will build a special method, configureCell, that builds the cells as the tableView needs them. So cellForRowAtIndexPath queries the configureCell to get a new cell if none is found in the cache.

在每次用户滚动时执行的cellForRowAtIndexPath的部分:

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

        UITableViewCell *cell = [theTableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {       
            cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
            [self configureCell:cell atIndexPath:indexPath];
        }
//this part is always executed!
}

我从我的模型中设置了标签值等等。这运作得很好,我相信这是为了正常工作并对CPU的负担最小。从我所能读的TableView指南中可以看出。

我的问题现在是,我的tableView中的第一个单元格与其他单元格不同。它有一个特殊的图标和其他的东西,可以将它与其他单元格分开。

在我的配置单元格中,我尝试询问:

if (indexPath.row == 0) {

    //do special setup!

}

This is a bad idea as the tableView lazy loads the cells and therefore the first cell that is off-screen, when being scrolled on-screen, will also get indexPath.row = 0 so now I have a "special cell" for every 7 cells. How do I get around this one?

第二个问题也源于上述问题: 我有一个习惯<条码>,在所有囚室安装<条码>。 当用户开发一个“Edit”纽芬兰语时,所有囚室的密码都应当改写成一个显示我们处于“Edit”模式的元件。 在这里,只有屏幕上的囚室才会发生这种情况,当时,滚动“旧”囚室要么与海滩相隔,要么正在建造新的囚室,而这种牢房又知道我们有ed。

当您点击一个单元格时,该单元格的indexPath.row永远不会有任何疑问,您需要将此索引与您的模型数组匹配,以确定用户点击了什么。但当TableView操作单元格(将它们拉到屏幕上,离开屏幕,删除,添加)时,似乎适用不同的规则。

我猜,我的问题是;为了遵循最佳实践,不与SDK对抗,我应该做什么来获得所需的功能,在细胞生命周期的哪个阶段应用此逻辑?

希望有人可以指导我朝正确的方向:)提前感谢您:)

最佳回答

I think the problem is not that the first off-screen cell is at indexPath.row = 0. The problem is that you are using the same CellIdentifier for regular and custom cells. So when the TableView goes to dequeue a cached cell, it is sometimes grabbing your custom cell that has the icon in it.

由于您为其分配了与常规单元格相同的CellIdentifier,因此它不知道它们不同。

应该有类似这样的东西修复它:

static NSString *CellIdentifier;
if([indexPath row] == 0){
    CellIdentifier = @"CustomCell";
} else {
    CellIdentifier = @"Cell";
}

我不确定你的编辑按钮问题是什么,但它可能有关。

问题回答

暂无回答




相关问题
Code sign Error

I have created a new iPhone application.I have two mach machines. I have created the certificate for running application in iPhone in one mac. Can I use the other mac for running the application in ...

ABPersonViewController Usage for displaying contact

Created a View based Project and added a contact to the AddressBook using ABAddressBookRef,ABRecordRef now i wanted to display the added contact ABPersonViewController is the method but how to use in ...

将音频Clips从Peter改为服务器

我不禁要问,那里是否有任何实例表明从Peit向服务器发送音响。 I m不关心电话或SIP风格的解决办法,只是一个简单的袖珍流程......

• 如何将搜查线重新定位?

我正试图把图像放在搜索条左边。 但是,问题始于这里,搜索条线不能重新布署。

热门标签