1

我想像 uipickerview 一样使用 uitableview。单击按钮时,uitableview 出现。单击任何单元格时,所选值将显示在上一页的按钮上

4

5 回答 5

4

将数据传回另一个控制器的正常方法是使用delegate协议。@protocol带有按钮的控制器将实现在表格视图控制器的 .h 文件中的声明中声明的协议方法。在该tableView:didSelectRowAtIndexPath:方法中,您将调用委托方法,传递单击的单元格的值。

于 2012-11-30T02:13:58.400 回答
0

就用这个

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

    [tableView deselectRowAtIndexPath:indexPath  animated:YES];
    UITableViewCell *cell=[self.m_TableView cellForRowAtIndexPath:indexPath];
    AppDelegate* appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    [appDelegate.m_SavedDictionary setObject:cell.textLabel.text forKey:@"driver"];
    [self.navigationController popViewControllerAnimated:YES];
}

以及之前视图使用的 ViewwillAppear 方法;

if([[appDelegate.m_SavedDictionary objectForKey:@"driver"]length]>=1)
{
    [m_driverButton setTitle:[appDelegate.m_SavedDictionary objectForKey:@"driver"] forState:UIControlStateNormal];

}

而已。

于 2012-11-30T05:57:04.687 回答
0

一些委托代码;您的 tableview 类中的协议:
@protocol SelectionDelegate <NSObject> -(void)setSelectedTableCellValue:(NSString*)value;@end让您以前的视图确认并成为您希望显示的 tableview 的委托,并实现协议方法。现在在单元格选择中,只需检索单元格的值并通过[delegate setSelectedTableCellValue:<some cell value>];HTH 将其传递给您的委托。

于 2012-11-30T04:35:53.683 回答
0

rdelmar 是正确的,最简单的方法可能是使用委托协议并将选定的值传递回前一个视图。

--

但是,假设您想将此值存储在表视图和选择器之外,您可以创建一个单例或使用 NSUserDefaults 来避免传递该值并可能丢失一些东西。如果这个 tableview/picker 在设置菜单等中,这就是我会做的。

请参阅此了解基础知识:http: //mobile.tutsplus.com/tutorials/iphone/nsuserdefaults_iphone-sdk/

于 2012-11-30T02:28:31.983 回答
0

您可能想查看核心数据,您将能够保存数据并重新访问数据/值并重新加载到您喜欢的任何视图控制器中。它是一个非常通用的工具,一旦你学会了它,你就可以更轻松地做很多事情。看看这个教程

于 2012-11-30T05:17:25.653 回答