Ios 使用按下按钮的标识&;要执行segue的数组行

Ios 使用按下按钮的标识&;要执行segue的数组行,ios,uitableview,uinavigationbar,segue,didselectrowatindexpath,Ios,Uitableview,Uinavigationbar,Segue,Didselectrowatindexpath,我刚从iOS和objective C开始,我在当前应用程序中尝试完成的一件事是根据表视图中行的标识和按下按钮的标识(这些是导航栏顶部的按钮)执行一个序列。我感到困惑的原因是,通常当我想用多个按钮做某事时,我会对两个按钮都有一个iAction,然后使用sender标记。然而,在本例中,我实际上是想做的是让类似(如果indexath.row==0&&Identity of button pressed==0)的东西在标识符发送器中自我执行 现在我不确定if语句的第二部分是什么,如果你能帮我编写一些代

我刚从iOS和objective C开始,我在当前应用程序中尝试完成的一件事是根据表视图中行的标识和按下按钮的标识(这些是导航栏顶部的按钮)执行一个序列。我感到困惑的原因是,通常当我想用多个按钮做某事时,我会对两个按钮都有一个iAction,然后使用sender标记。然而,在本例中,我实际上是想做的是让类似(如果indexath.row==0&&Identity of button pressed==0)的东西在标识符发送器中自我执行 现在我不确定if语句的第二部分是什么,如果你能帮我编写一些代码,我将非常感激


谢谢

如果用户需要先按下按钮,然后选择一行,您不能像在问题中那样使用复合If语句,因为该行还没有被选择。一种方法是让button方法在ivar上设置一个值(基于它的标记),然后签入didSelectRowatineXpath:。因此,如果您按下了一个int ivar按钮,您的iAction可能是:

@implementation ViewController {
    int buttonPressed;
}

-(IBAction)buttonPressed:(UIButton *) sender {
    buttonPressed = sender.tag;
}
然后,在DidSelectRowatineXpath方法中:

-(NSIndexPath *)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if(buttonPressed == 1) {
        // do something with indexPath.row info
        // perform whichever segue
    }else if (buttonPressed == 2) {
       // do something with indexPath.row info
        // perform whichever segue
    }
}

这是可行的。为了澄清这一点,用户首先选择一个tableview行,然后在导航栏中向上按一个按钮?实际上,情况正好相反。他首先按下一个条形按钮,然后选择一个tableview行。现在情况是这样的,虽然我的两个工具栏按钮都显示相同的tableviewrows(两种情况下表格的文本内容相同),但根据按下哪个按钮,顺序需要不同。这看起来很完美,正是我想要的!你能告诉我如何声明int ivar吗?嗯,我仍然得到一个错误。这是我设置它的方式:-(iAction)按钮按下:(id)发送者{NavButtonPressed=sender.tag;}我得到的错误是:“语义问题。在类型为“\uu strong id”的对象上找不到属性“tag”。@DavidWest,将iAction名称中的(id)更改为(UIButton*),如我在回答中所示。哦,没关系,我只是将其编辑为NavButton Pressed=[sender tag],它就工作了。虽然我知道我的基本原理在这里是完全错误的,但点符号不是也应该起作用吗?@DavidWest,id只是指任何对象。当您使用点表示法时,编译器似乎将其视为一个属性,因此它会给您一个错误,因为id不是一个特定的东西,并且没有属性。如果您使用方括号表示法,编译器知道这是一个方法,它假定您知道自己在做什么,并允许您编写它。当然,如果对象实际上没有实现该方法,它将在运行时崩溃。最好是显式地键入对象,除非您不知道可能会得到什么类型的对象。