在目标C中点击UITableViewCell时的事件?

时间:2015-05-28 02:34:36

标签: ios objective-c uitableview

我的项目遇到了以下问题:

enter image description here

我写了一个类,它是UIView的子类:

  

1 - 一个按钮

     

2 - 表格视图

     

3 - 文本字段

我已经创建了该类的对象,并将该对象添加到uiviewcontroller的视图中。当我单击按钮时,使表格视图显示所有国家/地区的列表并单击表格视图的单元格,文本字段将获取单元格的值。当我触摸tableview的单元格时,我想检测事件。我怎样才能做到这一点?请帮帮我,提前谢谢。

P / S:tableview是contentView的子视图。层次结构如下:

  

ViewController - ScrollView - contentView - (View1,View2 ...)

5 个答案:

答案 0 :(得分:0)

就像人们在评论中所说的那样,您只需要#include <stdio.h> #include <string.h> int main() { char married[3]; unsigned long t; int f; scanf("%f", &t); scanf("%d", &f); printf(" For the following question: Enter 0 if false. Enter anything but 0 if true. Are you married? %s", married); if (f == 0) { married == "no"; } else married == "yes"; return 0; } delegate。如果您以编程方式执行此操作,则需要在代码中添加许多内容,例如data source,并在<UITableViewDelegate, UITableViewDataSource>上调用它们。然后你需要实现一些方法。 Apple有关于所有类和方法的大量文档,请查看它们。您需要viewDidLoad

希望我能帮忙

答案 1 :(得分:0)

UITableView有委托协议,根据您的需要,您只需实施

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

您会知道indexPath点击的位置,因此您知道位置,然后就可以随心所欲。

如果您想获得相应的单元格,请使用

- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath

只需将indexPathdidSelectRowAtIndexPath传递到cellForRowAtIndexPath

即可

答案 2 :(得分:0)

这是你想要做的吗?

你没有提供代码或其他东西..所以,这只是我对你正在尝试的事情的假设..嗯..

请提供更多详情...如有必要,请编辑您的问题..

//viewController.h

@interface viewController : UIViewController

@property (nonatomic) NSMutableArray *selectedIndexs; 

// use this array as your dataSource for the secondTableView (popup tableView?)

@end

//viewController.m

@implementation viewController

// codes..
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    /*
        you need to store the countries indexPath to cell the name/details
        in this example i will just get the `.textLabel.text`
    */

    UITableViewCell *cell  = [tableView cellForRowAtIndexPath:indexPath/*current selected indexPath*/];

    if ([self.selectedIndexs containsObject:cell.textLabel.text]) 
    {
        // [self.selectedIndexs removeObject:cell.textLabel.text]; ]> delete if already in the array

        // return; ]> if you dont want to remove the object just return..
    }
    else
        [self.selectedIndexs addObject:cell.textLabel.text]; // add the country if not exist in the array

}

- (void)showSelectedCountries:(UIButton *)sender //this is the number 1 from the image (Button)
{
    UIView *customViewForSelected = [[UIView alloc] init];

    // then if you have declared a property for `dataSource` inside your 'customViewForSelected' just:

    customViewForSelected.yourSelectedsDataSource = selectedIndexs;

    // then show the view with the table inside which contains only the table.. correct?

    [self.view addSubview:customViewForSelected]; // i just added as subview because i dont know how you call it..
}

@end

希望,你觉得这很有用..干杯......

答案 3 :(得分:0)

我创建了一个类:UIViewbutton的子类,包含@interface DropdownListViewCountries : UIView<UITextFieldDelegate, UITableViewDelegate> ,文本字段和tableview。

@implementation DropdownListViewCountries

。在didSelectRowAtIndexPath,我实施了IndividualPersonalData 然后我创建了课程:UIViewControllerIndividualPersonalData的子视图。该类包含进度视图栏。 然后我创建了一个DropdownListViewCountries对象并添加到tableview。 如何触摸{{1}}的单元格以更改进度视图值?

答案 4 :(得分:0)

谢谢大家的帮助。现在为了我的目的,我发现下面的代码来检测事件:

[self.firstDropdownListView.countriesTextField addObserver:self forKeyPath:@"text" options:0 context:nil];


- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    if([keyPath isEqualToString:@"text"] && object == self.firstDropdownListView.countriesTextField)
    {
        // text has changed
        LogDebug(@"HELLO WORLD");
    }
}