Question: In my app I am doing tableView. By clicking row, the new view will navigate. Before navigation of new view, application is processing data from server. Until processing of data finished, view will not navigate. In this time period I want to disable userinteraction of tableview, so user can not select further rows.

```
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    tableView.userInteractionEnabled = NO;
}

```

Note that, When I again come back to the tableview, user will again allowed to select any row.
I do not have any idea, how can I enable userinteracation again.

Answer: 
Another idea could be: is to make every control that need state management implement **AsbtractControl** class which implies on every child define it's specific **notification state**.

Implement **EventManager** in your app that "hooks" event recieved from different controls, cast them like **AsbtractControl** and push on **StateStack** the state implied by the control just "activated" by user. 

Implement **DesitionalEngine** that parse on every action **StateStack** and Enables/Disables controls on UI and also Clears/Or Not stack based on desition made. Cause, as you said, the desition Enable/Disable can be done also base on multiple controls actions. 

Just to give you another idea, cause somethign similiar I implemented years ago for WinForms. 

Hope this helps.

Regards.
I have one solution to over come the above mentioned problem if we are using object model then it will be easy to maintain the state of all controls.