Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在uitableview中为一个按钮提供两个操作?_Ios_Objective C_Uitableview_Uibutton_Uiactionsheet - Fatal编程技术网

Ios 如何在uitableview中为一个按钮提供两个操作?

Ios 如何在uitableview中为一个按钮提供两个操作?,ios,objective-c,uitableview,uibutton,uiactionsheet,Ios,Objective C,Uitableview,Uibutton,Uiactionsheet,我一直在四处寻找解决办法,但似乎找不到一个适合我的办法。如何在iOS目标C中为一个UIButton执行两个操作 我的应用程序包含“登录用户”和“来宾用户” 如果登录用户进入UITableView查询按钮,则导航到一个控制器 如果“来宾用户”出现在UITableView查询按钮中,则导航到另一个控制器 登录后,您将了解登录的用户类型。根据用户类型移动到相应的控制器。你真的不必为同一个按钮设置多个动作。单击按钮时,检查登录的用户类型,即来宾/登录,并按下相应的控制器。例如,对于tableview单

我一直在四处寻找解决办法,但似乎找不到一个适合我的办法。如何在iOS目标C中为一个UIButton执行两个操作

我的应用程序包含“登录用户”和“来宾用户”

  • 如果登录用户进入
    UITableView
    查询按钮,则导航到一个控制器
  • 如果“来宾用户”出现在
    UITableView
    查询按钮中,则导航到另一个控制器

登录后,您将了解登录的用户类型。根据用户类型移动到相应的
控制器
。你真的不必为同一个按钮设置多个动作。单击按钮时,检查登录的用户类型,即来宾/登录,并按下相应的控制器。

例如,对于tableview单元格中的每个按钮,您可以在按钮上设置一个
@selector()

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    .
    //do stuff
    .

    [cell.buttonSave addTarget:self action:@selector(btnSaveTap:) forControlEvents:UIControlEventTouchUpInside];

  if ([user isequaltostring:login user])
    cell.buttonSave.tag = <tagNumber>
   else
     cell.buttonSave.tag = <anothertagNumber>

    //do stuff
    return cell;
}

您可以根据用户登录标志管理操作,而不是添加两个操作

i、 e如果用户是登录用户,则isLogin标志将为true,否则为false

为此,您可以使用以下用户默认值

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isLogin"];//here yes if normal user and no if guest user.
[[NSUserDefaults standardUserDefaults] synchronize];
在按钮点击中,您可以对其进行维护

- (void)btnclick:(UIButton *)sender {

  //here you can check login flag

 if([[NSUserDefaults standardUserDefaults] boolForKey:@"isLogin"]){
    // Navigate to login user
   }
   else{
    // Navigate to Guest user
   }
}
你可以这样试试

- (void)btnSaveTap:(UIButton *)sender {

    //here you can check tag number for desired action

   if(sender.tag ==tagNumber) // 
 {
  // Navigate to login user
 }
else
{
 // Navigate to Guest user
 }
}
- (IBAction)navigateToEnquire:(id)sender {

    NSLog(@"Button pressed: %@", [sender currentTitle]);    

   if ([[sender currentTitle] isEqualToString: @"login user"]) {

        // do something

   } else if ([[sender currentTitle] isEqualToString: @"guest user"]) {

     // do something

   }

}

你能展示一下你为了更好的理解所做的努力吗?试着设定一些布尔值。如果用户已登录,请将bool设置为yes。在按钮iAction中,检查bool值,如果为“是”,则导航到您想要的控制器如果为“否”,则它是来宾用户,以便您可以根据标记导航到buton的另一个controllerset标记打开VCif(appLoginType==AMGuestLogin){[projectListCell.InquireButton addTarget:self action:@selector(NavigateToInquire:)forControlEvents:UIControlEventTouchUpInside];}{[projectListCell.InquireButton addTarget:self action:@selector(Inquire:)forControlEvents:UIControlEventTouchUpInside];}像这样我试过了,但在调用NavigateToInquire方法时,我得到了Inquire方法,我早就解决了问题,由于工作量过大,我没有使用你的答案登录这里