我花了好几个小时试图解决这个问题 我正在尝试使用参数
初始化一个类- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//Fetch the value of the selected row in NSString
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
// NSString *tableRowValue = cell.text;
tableRowValue = [[listOfItems objectAtIndex:indexPath.row]objectForKey: @"clientId"];
//Call the next view
ContactsList *contactsList = [[ContactsList alloc] initWithNibName:NSStringFromClass([ContactsList class]) bundle:nil];
@try {
[self presentModalViewController:contactsList animated:YES];
}
@catch (NSException *ex) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:[NSString stringWithFormat:@"%@",ex]
delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
[alert show];
}
contactsList.modalTransitionStyle = UIModalTransitionStyleCrossDissolve ;
//Initialize the view with the clicked row value thwough NSString variable
[contactsList init:tableRowValue];
}
这行代码
[contactsList init:tableRowValue];
我收到以下警告:表达结果未使用
并且在ContactsList类中没有调用init方法
感谢您的帮助
答案 0 :(得分:0)
ContactList对象已在initWithNibName:方法中初始化,该方法又调用从NSObject继承的init方法(没有参数)。
如果您需要在初始化后设置视图,请创建一个名为“setupWithTableRowValue:”的方法或类似的方法。
答案 1 :(得分:0)
你不应该以这种方式调用init
。应该在分配对象后首先调用init
,而不再重新调用init
。在您的情况下initWithNibName
已经通过init
进行了调用。
改用一些setter。你的二传手不需要退货。
init始终返回id。所以
contactsList = [contactsList init:tableRowValue];
如果这是直接调用的,那将是很好的IF
contactList = [ContactsList alloc];
因为tableRowValue
实际上可能返回的另一个对象不是调用它的对象。你没有使用返回值,因此理论上可以放松你的对象。
再次:使用setter或类似方法将contactsList
传递给{{1}}。