繁体   English   中英

从UITableView中选择单元格并转到另一个UITableView

[英]select cell from UITableView and go to the another UITableView

在第二个tableview时我总是遇到错误。 我使用故事板创建一个简单的应用程序。 我的应用程序第一次运行时,它将显示我创建的数据列表。 如果用户单击该行,我想要切换到另一个页面,在另一个页面上也有一个tableview。 我也硬编码数据列表,但我没有显示它。

我总是在这部分出错

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SubSiteCellDetail"];
    cell.textLabel.text = [ListDetailSubSite objectAtIndex:indexPath.row]; //this always give me the error
    return cell;
}

这是我如何创建数据列表

ListDetailSubSite = [NSMutableArray arrayWithCapacity:10];
SubSite *detailSubSite = [[SubSite alloc] init];
detailSubSite.sSubSiteName = [subsite.sSubSiteName stringByAppendingString:@"1"];
[ListDetailSubSite addObject:detailSubSite];


detailSubSite = [[SubSite alloc] init];
detailSubSite.sSubSiteName = [subsite.sSubSiteName stringByAppendingString:@"2"];
[ListDetailSubSite addObject:detailSubSite];

这是我如何从UITableView移动到另一个UITableView。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"ShowSubSiteDetail"]) {
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
        SubSite *subsetSelected = [ListSubSite objectAtIndex:indexPath.row];
        [[segue destinationViewController] setSubsite:subsetSelected];
    }
}

这是我的错误看起来像

2012-10-29 15:18:11.127 UniversalStoryBoard[5256:f803] -[SubSite isEqualToString:]: unrecognized selector sent to instance 0x9355340
2012-10-29 15:18:11.129 UniversalStoryBoard[5256:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[SubSite isEqualToString:]: unrecognized selector sent to instance 0x9355340'
*** First throw call stack:
(0x13ce022 0x155fcd6 0x13cfcbd 0x1334ed0 0x1334cb2 0x1580ff 0x4fb1 0xb2c54 0xb33ce 0x9ecbd 0xad6f1 0x56d21 0x13cfe42 0x1d86679 0x1d90579 0x1d154f7 0x1d173f6 0x1d16ad0 0x13a299e 0x1339640 0x13054c6 0x1304d84 0x1304c9b 0x12b77d8 0x12b788a 0x18626 0x1fcd 0x1f35)
terminate called throwing an exception

这是图片:

图片

SubSite.h类

#import <UIKit/UIKit.h>

@interface SubSite : NSObject
@property (nonatomic, copy) NSString *sSubSiteName;

@end

class SubSite.m

#import "SubSite.h"

@implementation SubSite
@synthesize sSubSiteName;

@end

谁能帮我解决这个问题? 谢谢。

你发现了什么错误? 你试试这个吗?

cell.textLabel.text = [NSString stringWithFormat @"%@",[ListDetailSubSite objectAtIndex:indexPath.row]];

我认为问题出现是因为cell.textlable.text接受NSString所以你需要转换你的对象

你可以这样做

Subset *tmp = [ListDetailSubSite objectAtIndex:indexPath.row];
cell.textLabel.text = [NSString stringWithFormat:@"%@",tmp.sSubSetName];

问题可能是因为在cell.textLabel.text = [ListDetailSubSite objectAtIndex:indexPath.row]; 单元格需要一个字符串而不是ListDetailSubSite对象。

在此链接中解决了类似的错误:

为什么我在此Cocoa代码中收到isEqualToString错误?

既然你已经提到你已经创建了一个Subsite类,你可以试试这个方法..基本上你需要确保cell.textLabel.text的输入是一个NSString对象。

cell.textLabel.text = [ListDetailSubSite objectAtIndex:indexPath.row]

应该被替换

cell.textLabel.text = [[ListDetailSubSite objectAtIndex:indexPath.row] sSubSiteName] 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM